使用引用计数复制构造函数

时间:2016-04-22 14:27:47

标签: c++ copy-constructor

我正在尝试实现引用计数。对象的每个副本都应该为它增加计数器。 我的代码看起来

public void setPhoneNum(String phNum) {
    if (phNum.startsWith("05")&&(phNum.length()==10)){
        phoneNum = phNum;
    }

它会引发seg错误。我试图将对象复制构造函数作为指针传递,从而产生相同的输出。如何创建一个复制构造函数,它将通过指针指向对象,这将导致可能的引用计数?

3 个答案:

答案 0 :(得分:3)

您是否尝试过std::shared_ptr,它在C ++ 11中可用。此模板类具有经过良好测试和已开发的优点。这里有文档的link

答案 1 :(得分:1)

Kids *one;

似乎未初始化。将值复制到它时。这个值也是单元化的,因为它是私有的,我没有看到任何init代码。你必须添加像

这样的东西
kids(new Kids())

在Person构造函数中,它不是副本。

PS。不要忘记operator =和析构函数。

答案 2 :(得分:0)

只需在私有中创建一个静态变量,在类外部使用范围解析运算符将其初始化为零。然后在构造函数中将其递增1。每次你创建一个对象时,它的构造函数都会被调用,静态变量将增加一个。然后,当您想要时,您可以在任何需要的位置显示该变量(再次使用范围解析运算符)。