为什么类构造函数在通过复制初始化对象时不起作用
Why class constructor dont work when object initialization by copy?
为什么当我使用另一个对象的副本初始化类对象的构造函数时,它不起作用?
class Human
{
int No;
public:
Human(int arg):No(arg)
{
cout<<"constructor Works"<<endl;
}
};
int main()
{
Human a{10}; // constructor Works for object a
Human b{a}; //why b object's constructor dont work?
}
你需要一个复制构造函数,否则编译器将生成一个(它不输出任何内容)。加:
Human(const Human& h):No(h.No) { std::cout << "copy-ctor" << std::endl; }
"不起作用"是指运行代码后没有输出到屏幕吗?当然没有 - Human b{a}
调用与Human a{10}
完全不同的构造函数.它调用编译器生成的复制构造函数,其签名为:
Human(Human const& other)
如果您希望在复制构造时有输出,只需创建自己的输出:
class Human
{
// ...
Human(Human const& other)
: No{other.No}
{
std::cout << "copy-constructorn";
}
};
相关文章:
- C++使用整数的压缩数组初始化对象
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 在 c++ 中初始化对象
- C++ 手动分配和初始化对象
- 使用运算符"="在C++中用值初始化对象
- 当我不需要数据库中的所有值时,如何部分初始化 c++ 对象?
- 如何初始化对象数组?
- 在C++中使用默认构造函数初始化对象的不同方法
- 使用默认构造函数初始化对象的不同方法
- 是否可以在编译时初始化对象的 C 样式函数指针,以便它调用对象的成员函数?
- 如何在线程中初始化对象,然后在其他地方使用它?
- 在没有默认构造函数时使用垃圾数据初始化对象
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 在 c++ 中复制对未初始化对象的引用
- 在成员变量在另一个文件中发生更改后,调用与初始化对象分开的函数
- 在不放置新运算符的情况下,在预分配的内存上使用虚函数初始化对象 - 这可能吗?如果没有,为什么
- 复制 CTOR 与赋值运算符以初始化对象(性能)
- 当您通过分配初始化C 对象时会发生什么
- 获取未初始化对象成员的地址是否定义良好?