博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
特殊数据类型成员变量的初始化
阅读量:7239 次
发布时间:2019-06-29

本文共 2054 字,大约阅读时间需要 6 分钟。

最近碰到了静态成员初始化问题,故在网上搜索了点资料,感觉这篇总结的蛮不错的,转来学习下。

原文地址:

 

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:

a.       常量型成员变量

b.       引用型成员变量

c.       静态成员变量

d.       整型静态常量成员变量

e.       非整型静态常量成员变量 

对于常量型成员变量和引用型成员变量的初始化,必须通过构造函数初始化列表的方式进行。在构造函数体内给常量型成员变量和引用型成员变量赋值的方式是行不通的。

静态成员变量的初始化也颇有点特别。

参考下面的代码以及其中注释:

// Initialization of Special Data Member #include 
using namespace std; class BClass {
public: BClass() : i(1), ci(2), ri(i) // 对于常量型成员变量和引用型成员变量,必须通过 { // 参数化列表的方式进行初始化。在构造函数体内进 } // 行赋值的方式,是行不通的。 void print_values() {
cout << "i =\t" << i << endl; cout << "ci =\t" << ci << endl; cout << "ri =\t" << ri << endl; cout << "si =\t" << si << endl; cout << "csi =\t" << csi << endl; cout << "csi2 =\t" << csi2 << endl; cout << "csd =\t" << csd << endl; } private: int i; // 普通成员变量 const int ci; // 常量成员变量 int &ri; // 引用成员变量 static int si; // 静态成员变量 //static int si2 = 100; // error: 只有静态常量成员变量,才可以这样初始化 static const int csi; // 静态常量成员变量 static const int csi2=100; // 静态常量成员变量的初始化(Integral type) (1)(在VC++6.0也是不允许的) static const double csd; // 静态常量成员变量(non-Integral type) //static const double csd2 = 99.9; // error: 只有静态常量整型数据成员才可以在类中初始化 }; // 静态成员变量的初始化(Integral type) int BClass::si = 0; // 静态常量成员变量的初始化(Integral type) const int BClass::csi = 1; // 静态常量成员变量的初始化(non-Integral type) const double BClass::csd = 99.9; // 在初始化(1)中的csi2时,根据Stanley B. Lippman的说法下面这行是必须的。 // 但在VC2003中如果有下面一行将会产生错误,而在VC2005中,下面这行则可有可无,这个和编译器有关。 const int BClass::csi2; int main(void) {
BClass b_class; b_class.print_values(); return 0; }

转载地址:http://uugfm.baihongyu.com/

你可能感兴趣的文章
将博客搬至CSDN
查看>>
我的友情链接
查看>>
数据库(升级)迁移
查看>>
nfs文件不共享,Stale file handle
查看>>
电脑死机、开机死机故障原因汇总(硬件)
查看>>
Bootstrap中的段落和强调内容
查看>>
我们如何理解虚拟化、云计算(二)
查看>>
springboot 集成 websocket
查看>>
linux下oralcle11g使用edit命令默认调用vi编辑器
查看>>
Nginx网站服务
查看>>
Goko撤回其HTML5游戏平台:技术故障
查看>>
生成https的证书文件(2)
查看>>
java视频教程之十个程序员要知道的调试技巧
查看>>
RD会话主机服务器2012上没有可用的远程桌面许可证服务器
查看>>
安全的清理软件——CleanMyMac
查看>>
怎么让解压缩工具BetterZip用起来更顺手
查看>>
Ubuntu中卸载CrossOver困难?那是你没学会这个命令
查看>>
Error:Execution failed for task ':app:dexDebug'. >
查看>>
音乐时“氪”就是这个feel 用QQ音乐倍儿爽
查看>>
418合练剑指618,猫宁要给京东一个下马威?
查看>>