常引用,常对象,常成员函数,常数据成员~
2017-04-29 23:01
204 查看
①常引用
形式—— const 类型 &对象名或变量名
②常对象
形式——const 类名 对象名
1.常对象的数据成员不能被修改了,在定义的时候应该对其进行初始化
2.常对象不能够调用普通成员函数——因为普通成员函数可能会修改对象的数据类型,这是不安全的。
3.常对象可以调用静态成员函数,常成员函数,其实也可以调友元函数 (但是这里不对每一个具体展开了,就只是为了更加明白常对象是不能调用普通的成员函数的即可)
③常成员函数
形式——返回值类型 方法名(参数表)
1.常成员函数不能改变对象的值,也不能在函数体里面调非常成员函数。
2.常对象可以调常成员函数和静态成员函数
3.常成员函数实现的时候,函数头是应该和声明的函数头一致的,const也是函数类型的一个组成部分,而对于友元函数和静态成员函数是不用friend和static的
4.非常对象也可以调用常成员函数,但是当常成员函数与非常成员函数同名的时候(可以视为函数重载),对于非常对象是会优先调用非常成员函数的。
④常数据成员
形式——const 数据类型 变量名;
(当同时还是静态数据成员的时候)static const 数据类型 变量名;
1.常数据成员的初始化只能通过构造函数的列表来完成
2.但是静态的常数据成员必须在类外进行初始化,不能在构造函数中进行,并且const不能省
3.如果类有多个重载构造函数,就应该在每一个重载构造函数的初始化列表中去初始化常数据成员,当然刚才说的2.除外。
形式—— const 类型 &对象名或变量名
②常对象
形式——const 类名 对象名
1.常对象的数据成员不能被修改了,在定义的时候应该对其进行初始化
2.常对象不能够调用普通成员函数——因为普通成员函数可能会修改对象的数据类型,这是不安全的。
3.常对象可以调用静态成员函数,常成员函数,其实也可以调友元函数 (但是这里不对每一个具体展开了,就只是为了更加明白常对象是不能调用普通的成员函数的即可)
③常成员函数
形式——返回值类型 方法名(参数表)
1.常成员函数不能改变对象的值,也不能在函数体里面调非常成员函数。
2.常对象可以调常成员函数和静态成员函数
3.常成员函数实现的时候,函数头是应该和声明的函数头一致的,const也是函数类型的一个组成部分,而对于友元函数和静态成员函数是不用friend和static的
4.非常对象也可以调用常成员函数,但是当常成员函数与非常成员函数同名的时候(可以视为函数重载),对于非常对象是会优先调用非常成员函数的。
④常数据成员
形式——const 数据类型 变量名;
(当同时还是静态数据成员的时候)static const 数据类型 变量名;
1.常数据成员的初始化只能通过构造函数的列表来完成
class CPoint { public: CPoint(int xx, int yy,int zz); private: int x,y; const int z; }; CPoint::CPoint(int xx, int yy, int zz) :z(zz) { x = xx; y = yy; //z = zz; 这个是不被允许的,因为会报赋值号左侧必须是可修改的左值(可修改,有数据存储空间) }
2.但是静态的常数据成员必须在类外进行初始化,不能在构造函数中进行,并且const不能省
class CPoint { public: CPoint(int xx, int yy,int zz); private: int x,y; static const int z; }; const int z = 10; //const不能省,也是类型的一部分
3.如果类有多个重载构造函数,就应该在每一个重载构造函数的初始化列表中去初始化常数据成员,当然刚才说的2.除外。
相关文章推荐
- 有关C++中的常对象,常成员函数,常数据成员,常引用的认识
- C++共享数据的保护(常对象,常成员,常引用)
- C++之不同对象的成员函数如何引用指定对象的数据成员
- c++中直接用类的对象名加‘.’成员运算符引用操作类的私有成员数据
- 用conat修饰的类成员——常成员函数、常成员数据、常引用
- 常对象、类的常数据成员、类的常成员函数的访问特性1
- C++const对象 常量数据 常量成员函数 const指针 const引用
- c++常对象 常数据成员 常成员函数
- 关于JSON转换为对象时出现的:数据协定类型 “***”无法反序列化,因为未找到必需的数据成员 **(字段名)
- 类的实例对象是引用数据类型
- 访问对象的数据成员
- 鸡啄米:C++编程入门系列之二十三(C++程序设计必知:常引用、常对象和对象的常成员)
- ADO.NET 实体数据模型 异常-“序列化类型为 XX 的对象时检测到循环引用”
- 在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型XXX的对象时检测到循环引用。
- 定义一个描述“点”的类及该类的对象,并使用构造函数初始化数据成员
- 在 Asp.net下的对象成员数据绑定器实现
- C++对象模型之数据成员模型(1)
- 基础------数据存储、对象引用、static关键字
- 由数据成员地址获取对象首地址
- 静态成员数据 静态对象初始化