标题:由于构造函数中影响到该类对象之外的静态成员,为防止初始化出现问题,为类 ...
只看楼主
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
结帖率:31.58%
已结贴  问题点数:10 回复次数:2 
由于构造函数中影响到该类对象之外的静态成员,为防止初始化出现问题,为类定义了一个复制初始化构造函数
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存储所有对象的总重量。

由于构造函数中影响到该类对象之外的静态成员,为防止初始化出现问题,为类定义了一个复制初始化构造函数。请问这句该怎么理解?
搜索更多相关主题的帖子: public 影响 
2012-07-18 09:16
★逆时光
Rank: 2
来 自:浙江
等 级:论坛游民
帖 子:11
专家分:42
注 册:2011-12-29
得分:5 
不懂,同求,帮顶
2012-07-19 16:57
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:5 
你可以在加上和去掉那个所谓“复制初始化构造函数”(话说这个一般都翻译成 拷贝构造函数 吧……)试试下面这段代码:
当然你也许要先把 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;
}

2012-07-19 22:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-373605-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.101529 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved