视频发布播放网站建设,asp.net 4.0网站开发与项目实战 pdf,山河建设有限公司网站,广州 建网站目录 ⭐const成员
⭐取地址及const取地址操作符重载
⭐static成员
⭐概念
⭐特性 ⭐const成员
将const修饰的“成员函数”称之为const成员函数#xff0c;const修饰类成员函数#xff0c;实际修饰该成员函数隐含的this指针#xff0c;表明在该成员函数中不能对类的任何…
目录 ⭐const成员
⭐取地址及const取地址操作符重载
⭐static成员
⭐概念
⭐特性 ⭐const成员
将const修饰的“成员函数”称之为const成员函数const修饰类成员函数实际修饰该成员函数隐含的this指针表明在该成员函数中不能对类的任何成员进行修改。 看看下面的代码
class Date
{
public:Date(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout Print() endl;cout year: _year endl;cout month: _month endl;cout day: _day endl endl;}void Print() const{cout Print()const endl;cout year: _year endl;cout month: _month endl;cout day: _day endl endl;}
private:int _year; // 年int _month; // 月int _day; // 日
};
void Test()
{Date d1(2022, 1, 13);d1.Print();const Date d2(2022, 1, 13);d2.Print();
} 运行结果 左图中有两个Print()函数一个是const成员函数另一个不是const成员函数右图中只有一个const成员函数的Print()
对比两个的运行结果可以发现:
const对象只能调用const成员函数非const对象既可以调用const成员函数也可以调用非const成员函数 请思考下面的几个问题1. const对象可以调用非const成员函数吗 不可以const修饰了隐藏的this指针调用非const成员函数属于权限的放大不可行。2. 非const对象可以调用const成员函数吗 可以允许这种权限缩小的行为3. const成员函数内可以调用其它的非const成员函数吗 不可以权限放大了4. 非const成员函数内可以调用其它的const成员函数吗 可以是权限的缩小 ⭐取地址及const取地址操作符重载
这两个默认成员函数一般不用重新定义 编译器默认会生成。
class Date
{
public:Date* operator(){return this;}const Date* operator()const{return this;}
private:int _year; // 年int _month; // 月int _day; // 日
}; 可以发现无论写不写这两个重载函数都可以正确地取地址这就是因为这两个默认成员函数一般不用重新定义 编译器默认会生成。
这两个运算符一般不需要重载使用编译器生成的默认取地址的重载即可只有特殊情况才需 要重载比如想让别人获取到指定的内容不过多介绍
⭐static成员
⭐概念
声明为static的类成员称为类的静态成员用static修饰的成员变量称之为静态成员变量用static修饰的成员函数称之为静态成员函数。静态成员变量一定要在类外进行初始化 一个思考题实现一个类计算程序中创建出了多少个类对象。 设置一个变量来记录创建类对象的个数因为始终要对同一个变量进行操作所以这个变量要设置成静态的成员变量通过静态的成员函数来访问这个变量的大小。
#includeiostream
using namespace std;
class A
{
public:A() { _scount; }A(const A t) { _scount; }~A() { --_scount; }static int GetACount() { return _scount; }
private:
//声明
//不属于某一个对象属于所有对象属于整个类不能给缺省值static int _scount;//要对同一个n进行操作就要写成静态了
};
int A::_scount 0;//在类外面定义
void TestA()
{cout A::GetACount() endl;//静态成员函数才可以这么访问A a1, a2;A a3(a1);cout A::GetACount() endl;
}
int main()
{TestA();return 0;
}
⭐特性 静态成员为所有类对象所共享不属于某个具体的对象存放在静态区 静态成员变量必须在类外定义定义时不添加static关键字类中只是声明 类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问 静态成员函数没有隐藏的this指针不能访问任何非静态成员 静态成员也是类的成员受public、protected、private 访问限定符的限制
【问题】
静态成员函数可以调用非静态成员函数吗 不可以静态成员函数没有this指针不能访问非静态的成员变量非静态成员函数可以调用类的静态成员函数吗 可以的它们都在同一个类里面 ___________________________________________________________________________________
⭐感谢你的阅读希望本文能够对你有所帮助。如果你喜欢我的内容记得点赞关注收藏我的博客我会继续分享更多的内容。⭐