class Gun{
private:
int bullet;
public:
Gun(int bnum) : bullet(bnum) { }
};
class Police{
private:
Gun * pistol;
public:
Police(int bNum) : {
if(bNum>0)
pistol = new Gun(bNum);
else
pistol=NULL;
}
Police(const Police& ref){
pistol=new Gun(*(ref.pistol)); //Confused about this part.
}
};
我目前正在学习 C++,我对 Police 的复制构造函数中发生的事情有点迷茫。我相信 Gun 的构造函数只接受整数,但如何将 *(ref.pistol) 作为参数分配给它?我认为 *(ref.pistol) 是一个 Gun 对象,而不是一个整数。
最佳答案
如果你自己没有显式声明一个复制构造函数,编译器总是隐式声明一个复制构造函数(尽管在某些情况下它可以被删除)。您感到困惑的那一行调用了这个隐式声明的复制构造函数。
这个隐式声明的复制构造函数是公共(public)的,并且(如果使用它)它只是执行成员复制,即,就好像您已经编写了
public:
Gun(const Gun& other): bullet(other.bullet) {}
关于c++ - 复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831310/