注册 登录
编程论坛 C++教室

由于构造函数中影响到该类对象之外的静态成员,为防止初始化出现问题,为类定义了一个复制初始化构造函数

全世界安静 发布于 2012-07-18 09:16, 556 次点击
class goods{
    static int totalweight;   
    int weight;
public:
    goods(int x){
        weight=x;
        totalweight+=weight;
    }
   goods(goods &g){
        weight=g.weight;
        totalweight+=weight;
    }
};
由goods类实例出每个具体的对象,weight为每个对象的重量,goods类静态成员totalweight存储所有对象的总重量。

由于构造函数中影响到该类对象之外的静态成员,为防止初始化出现问题,为类定义了一个复制初始化构造函数。请问这句该怎么理解?
2 回复
#2
★逆时光2012-07-19 16:57
不懂,同求,帮顶
#3
pangding2012-07-19 22:27
你可以在加上和去掉那个所谓“复制初始化构造函数”(话说这个一般都翻译成 拷贝构造函数 吧……)试试下面这段代码:
当然你也许要先把 totalweight 改成 public 才行。这不会产生什么本质影响。
程序代码:
int main(int argc, char *argv[])
{
    goods a(5);
    cout << goods::totalweight << endl;

    goods b(5);
    cout << goods::totalweight << endl;

    goods c(b);
    cout << goods::totalweight << endl;

    return 0;
}

1