使用复制构造函数有什么好处?

man*_*ngu 3 c++ oop

我是面向对象编程的新手,这可能是一个愚蠢的问题,但是如果你想创建一个对象的副本,我不明白为什么使用A类代码比使用B类更好.

class A {
    int num;
public:
    A(const A &ref) : num(ref.num) {};
};

class B { 
    int num;
public:
    B(B *ptToClass) : num(ptToClass->num) {};
};
Run Code Online (Sandbox Code Playgroud)

如果我做对了,复制构造函数用在A类中.

Bri*_*ian 5

如果您没有为您的类声明复制构造函数,编译器将为您声明一个.类必须具有复制构造函数.他们被融入语言并具有特殊地位.没有它们,语言就不起作用.

可能最好的例子是在传递值时需要复制构造函数.当您按值传递时,编译器将隐式调用复制构造函数.它不会调用构造函数B::B(B*).

因此,如果您希望您的类可以复制,则应在复制构造函数中定义复制逻辑.这更容易.