复制构造函数

吉林
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对象,而不是整数。

Brian Bi

如果您自己没有明确声明一个副本构造函数,则编译器总是隐式声明一个副本构造函数(尽管在某些情况下可以将其删除)。您感到困惑的那一行调用此隐式声明的副本构造函数。

这个隐式声明的副本构造函数是公共的,并且(如果使用了)它只是按成员复制,,就像您已经编写了

public:
    Gun(const Gun& other): bullet(other.bullet) {}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章