| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 556 人关注过本帖
标题:由于构造函数中影响到该类对象之外的静态成员,为防止初始化出现问题,为类 ...
只看楼主 加入收藏
全世界安静
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
快速回复:由于构造函数中影响到该类对象之外的静态成员,为防止初始化出现问题, ...
数据加载中...
 
   



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

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