我正在尝试实现引用计数。对象的每个副本都应该为它增加计数器。 我的代码看起来
public void setPhoneNum(String phNum) {
if (phNum.startsWith("05")&&(phNum.length()==10)){
phoneNum = phNum;
}
它会引发seg错误。我试图将对象复制构造函数作为指针传递,从而产生相同的输出。如何创建一个复制构造函数,它将通过指针指向对象,这将导致可能的引用计数?
答案 0 :(得分:3)
您是否尝试过std::shared_ptr
,它在C ++ 11中可用。此模板类具有经过良好测试和已开发的优点。这里有文档的link。
答案 1 :(得分:1)
Kids *one;
似乎未初始化。将值复制到它时。这个值也是单元化的,因为它是私有的,我没有看到任何init代码。你必须添加像
这样的东西kids(new Kids())
在Person构造函数中,它不是副本。
PS。不要忘记operator =和析构函数。
答案 2 :(得分:0)
只需在私有中创建一个静态变量,在类外部使用范围解析运算符将其初始化为零。然后在构造函数中将其递增1。每次你创建一个对象时,它的构造函数都会被调用,静态变量将增加一个。然后,当您想要时,您可以在任何需要的位置显示该变量(再次使用范围解析运算符)。