我是面向对象编程的新手,这可能是一个愚蠢的问题,但是如果你想创建一个对象的副本,我不明白为什么使用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类中.
如果您没有为您的类声明复制构造函数,编译器将为您声明一个.类必须具有复制构造函数.他们被融入语言并具有特殊地位.没有它们,语言就不起作用.
可能最好的例子是在传递值时需要复制构造函数.当您按值传递时,编译器将隐式调用复制构造函数.它不会调用构造函数B::B(B*).
因此,如果您希望您的类可以复制,则应在复制构造函数中定义复制逻辑.这更容易.