首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

合成的构造函数对静态数据成员是怎么办的

2012-04-18 
合成的构造函数对静态数据成员是怎么处理的?书上讲的是对于每个非static的成员会依次复制,但是看下面的代

合成的构造函数对静态数据成员是怎么处理的?
书上讲的是对于每个非static的成员会依次复制,但是看下面的代码,static也复制了啊!!

C/C++ code
#include <iostream>using namespace std;class CL1{    public :    static int ival;    int ii;    CL1():ii(1){    }};int CL1::ival=3;int main(){    CL1 cl1;    cl1.ival=9;    cout<<cl1.ival<<endl;    CL1 cl2(cl1);    cout<<cl2.ival<<endl;    return 0;}
?
? 静态成员如果不复制的话,ival应该是默认值3啊,怎么也成了9!!复制了???!

[解决办法]
不是复制,static变量是所有对象共享的
[解决办法]
静态成员是所有实例共享的,所以不存在复制的问题。你在任意一处修改了,另一个实例也是会跟着变化的,和复制构造函数没有任何关系。

暂且理解为全局变量好了,你的cl1.ival = 9和 CL1::ival=9;或者cl2.ival = 9都能修改到同一个变量,起的作用一样,只是表达方式不一样而已。

热点排行