Lession 10 静态成员、const成员、对象成员
来源:互联网 发布:windows桌面备份恢复 编辑:程序博客网 时间:2024/05/16 16:02
静态成员
:编译时申请内存,程序运行之后释放内存;内存地址属于全局域的静态区,不占用对象的内存
class A{public:A getA(); static A getSA(); static int psa; // 可以用类对象来访问 a.psa; 或是 A::psa;private:static int sa; // 不能用类对象来访问 a.sa;是错的,只能 A::sa;}//初始化,不用加staticint A::sa = 0;或 int A::sa;
静态数据成员:
1. 必须初始化,且只能在类外初始化;
2. 不能用构造函数对static成员变量初始化,只是赋值,静态数据成员属于类的,可以不用实例化对象的情况下就可以访问;(因为static是编译前在全局域分配内存空间,构造函数时只是给已经有内存的变量赋值)
3. 其它地方用要用类作用域运算符,公用时可以用a.sa来访问或是A::sa来访问。但如果是私有变量,则不能在其它地方直接用A::sa来访问,可以通过成员函数来访问
4.静态成员没有this指针
静态成员函数:
静态成员函数是专门用来访问私有的静态数据成员变量,不能用来访问非静态数据成员(因为要实例化对象,如果没有则可能出错)
A demo;demo.getA();
// 如果不想声明对象,则函数前加static
A::getSA();
对象成员
:一个类里包含另一个类的对象(不能包含类自身,但可以包含类自身的引用与指针)
const 成员,子对象成员,引用成员必须用初始化列表来初始化
class A{public:</span>A(){};};class C</span>{// 如果是有参的构造函数,则必须用初始化列表C(int c){};}class B{public:A a;C c; // A C初始化的顺序是声明顺序A C与初始化列表的顺序无关B():c(2),a(){}; // C构造函数有参,不会生成默认构造函数,必须调用有参的;//a是无参构造函数,可以不加,c是有参构造函数,必须加上初始化列表中// 构造函数调用顺序: A C B:先调用子对象构造函数,子对象顺序是按声明顺序调用构造// 析构函数的调用顺序与构造函数的调用顺序相反:B C A!!}
const成员:const修饰的
常数据成员
class A{const string str; // 值不可以改变,一定要用到初始化列表}</span>
常成员函数
1. 声明定义都要用const修饰
2. 不得修改数据成员值,仅能访问
3. 静态的成员函数不得声明为const
4. const成员函数不能调用非const成员函数
5. 常对象调用常成员函数(如果发生重载时有:void f
un(); void fun() const(); 常对象会调用第二个)
un(); void fun() const(); 常对象会调用第二个)
class A{ public:void fu() const; void noCnst();}; void A::fu() const { }
常对象
const A a; // 常对象所有的数据成员是不可以改变的!!即都是只读变量a.fu(); // const成员函数,可以
a.noCnst(); // 非const成员函数,可以调用!!
1. const对象只能引用const成员函数,因此非const函数里可能会改变变量的值
2. const对象可以引用const或非const成员变量 ,但都是只读,不能改变
mutable:修饰的变量:const对象下是可以改变的
0 0
- Lession 10 静态成员、const成员、对象成员
- 静态成员 内联成员函数 const对象和const成员函数
- 静态成员 内联成员函数 const对象和const成员函数
- 静态数据成员 静态函数成员 以及 const 成员变量
- const对象const成员函数
- const成员函数和对象
- const成员函数、const类对象、mutable数据成员
- const对象调用非const成员函数
- const成员函数与const对象
- const对象和const成员函数
- const对象与const成员函数
- const对象和const成员函数
- const成员函数与const对象
- const对象,const成员函数总结
- const对象和const成员函数
- const修饰成员函数const修饰对象
- const 对象和 const 成员函数
- const对象和const成员函数
- wampserver You don't have permission to access / on this server. 解决方法
- 022
- mysql 优化
- VirtualBox创建虚拟电脑、运行Genymotion模拟器报错
- 哈夫曼树(最优二叉树)及其Java实现
- Lession 10 静态成员、const成员、对象成员
- 翻硬币
- java中的对象实例化
- OAF—Entity Object 之 Delete Data
- MIT 6.02 introduction to EECS II(digital communication) video notes
- 10-3. 字符串逆序(15)
- IOS学习笔记 -- 音频视频
- linux编程--shell
- MYSQL用法(十) 将某字段的值全部+5