Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未调用赋值运算符 #包括 类内存块{ 私人: 整数长度=0; int*m_arr=nullptr; 公众: //建造师 显式内存块(int p_length):长度(p_length),m_arr(new int[length]){ std::cout_C++ - Fatal编程技术网

C++ 未调用赋值运算符 #包括 类内存块{ 私人: 整数长度=0; int*m_arr=nullptr; 公众: //建造师 显式内存块(int p_length):长度(p_length),m_arr(new int[length]){ std::cout

C++ 未调用赋值运算符 #包括 类内存块{ 私人: 整数长度=0; int*m_arr=nullptr; 公众: //建造师 显式内存块(int p_length):长度(p_length),m_arr(new int[length]){ std::cout,c++,C++,MemoryBlock mb3=mb1+mb2;调用复制构造函数 MemoryBlock mb3;mb3=mb1+mb2;调用赋值运算符。MemoryBlock mb3=mb1+mb2;调用复制构造函数。为什么?如何修复它?因为它是对象的副本初始化。通过调整复制构造函数来修复它(无论什么)。“赋值”如果赋值运算符采用MemoryBlock而不是MemoryBlock&,则将在调用加号运算符之后和调用赋值运算符之前调用复制构造函数。 In MemoryBlock(int), length is 1

MemoryBlock mb3=mb1+mb2;
调用复制构造函数


MemoryBlock mb3;mb3=mb1+mb2;
调用赋值运算符。

MemoryBlock mb3=mb1+mb2;
调用复制构造函数。为什么?如何修复它?因为它是对象的副本初始化。通过调整复制构造函数来修复它(无论什么)。“赋值”如果赋值运算符采用
MemoryBlock
而不是
MemoryBlock&
,则将在调用加号运算符之后和调用赋值运算符之前调用复制构造函数。
In MemoryBlock(int), length is 11.
In MemoryBlock(const MemoryBlock&), length is 11.
In operator+(const MemoryBlock&), adds length and array space. New length: 22
In MemoryBlock(int), length is 22.  // Maybe temporary object?
----------------- End of main() -----------------
~MemoryBlock() is called. Deleting resources.
~MemoryBlock() is called. Deleting resources.
~MemoryBlock() is called. Deleting resources.