C++基础知识---static const成员变量的初始化
来源:互联网 发布:网络视频广告价格表 编辑:程序博客网 时间:2024/05/01 16:44
为了将常量的作用域限制于class内,你必须让让成为class的一个成员;而为确保此常量之多只有一份实体,你必须让让成为一个static成员:
Class Gameplayer
{
Private:
Staticconst int Number = 5; //常量声明式
Intscores[Number]; //使用该常量
};
然而你所看到的是Number的声明式而非定义式。通常C++要求你对你所使用的任何东西提供一个定义式,但如果他是个class专属常量又是static且为整数类型,则需特殊处理。只要不取他们的地址,你可以声明并使用他们而无须提供定义式。但如果你取某个class专属常量的地址,或纵使你不取其地址而你的编译器却坚持要看到一个定义式,你就必须另外提供定义式如下:
Const int Gameplayer::Number; //Number的定义
请把这个式子放进一个实现问价而非头文件。由于class常量已在声明时获得初值,因此定义时不可以再设初值。
对于const关键字在STL迭代器中的使用:
STL迭代器系以指针为根据塑模出来,所以迭代器的作用就像个T*指针。声明迭代器为const就像声明指针为const一样(即声明一个T* const指针),表示这个迭代器不得指向不同的东西,但它所指的东西是可以改变的。如果你希望迭代器所指的东西不可被改动(既希望STL模拟一个const T*指针),你需要的是const_iterator;
Std::vector<int> vec;
Const vector<int>::iterator iter =vec.begin(); //iter的作用像是T* const
*iter = 10; //可以
++iter;// 不可以
Vector<int>::const_iterator citer =vec.begin();
*citer = 10; //错误
++citer;// 可以
Cost成员函数
将const作用域成员函数的目的,是为了确认该成员函数可作用于const对象身上。
C++有着十分固定的“成员初始化次序”。次序总是相同:base classes更早于其derived classes被初始化,而class的成员变量总是以其声明次序被初始化。即使他们的成员初值列中以不同的次序出现,也不会有任何影响。当你在成员初值列中条列各个成员时,最好总是以其声明次序为次序。
构造函数最好使用成员初值列,而不要在构造函数本体内使用赋值操作。初值列列出的成员变量,其排序次序应该和它们在class中的声明次序相同。
什么时候empty class(空类)不再是个empty class呢?当C++处理过它之后。如果你自己没声明,编译器就会为它声明(编译器版本的)一个copy 构造函数、一个copy assignment操作符和一个析构函数。此外如果你没有声明任何构造函数,编译器也会为你声明一个default构造函数。所有这些函数都是public且inline。同时只有当这些函数被需要,他们才会被编译创建出来。如果一旦用户自定义了任何构造函数,编译器就不会合成一个default 构造函数
如果你打算在一个“内含reference成员”的class内支持赋值操作,你必须自己定义copy assignment操作符。面对内含const成员的classes,编译器也是不赋值,也需要自定义copy assignment.如果某个base classes将copy assignment操作符声明为privaete,编译器将拒绝为其derived class生成一个copy assignment操作符。
所以还是自己定义这些函数比较靠谱,如果不想使用编译器自动生成的函数,就应该明确拒绝
赋值(assignment)操作符返回一个reference to *this
- C++基础知识---static const成员变量的初始化
- static const 型成员变量的初始化
- const static const static成员变量的初始化
- 初始化const, static, const static, static const成员变量
- 初始化const, static, const static, static const成员变量
- 类的const成员变量、static const、static成员变量的初始化
- 类的const成员变量、static const、static成员变量的初始化
- const static与相关成员变量的初始化
- 类内const static(static const)成员变量初始化问题
- c++类中static、const、static const成员变量初始化
- c++类中const/static/const static成员变量初始化
- const static 和 static 成员的初始化
- C++static / const /static const 型成员变量
- 类的const变员变量和static成员变量的初始化总结
- C++ 类成员变量初始化 static / const / auto
- 类的const static 成员变量
- 类中static静态变量与const常量成员的初始化
- const型类成员变量的初始化
- linux下weblogic启动报错
- 输出1000到2000年的闰年的年份
- CSDN博客ByeBye
- python邮件发送
- iOS中关于多线程的一些方法
- C++基础知识---static const成员变量的初始化
- java验证码的生成
- 春天用到的设计模式
- 【Android】解决第一次安装Android Studio1.0版本未翻墙情况下,无法进入Android Studio
- unity3D--数据库
- 通过 Python 装饰器实现DRY(不重复代码)原则
- SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
- 使用Mockup Plus的九大理由
- python发送QQ邮件