kes*_*Him 0 c++ deep-copy copy-constructor shallow-copy
(和cpp失去联系太久了,想复习一下明天的面试)。
正在修订深层复制与浅层复制。写了代码:
#include <iostream>
class MyClass {
public:
unsigned int* uivar = nullptr;
MyClass() : uivar(new unsigned int) {
*(this->uivar) = 3;
}
~MyClass() { delete uivar; }
MyClass(const MyClass& mCopy) {
*(uivar) = *(mCopy.uivar);
}
};
void function(MyClass m) {
*(m.uivar) = 4;
}
int main() {
MyClass myClass;
MyClass myClassCopy = myClass;
std::cout << *(myClass.uivar) << "\n";
std::cout << *(myClassCopy.uivar) << "\n";
function(myClass);
std::cout << *(myClass.uivar) << "\n";
std::cout << "hhhh" << "\n";
*(myClassCopy.uivar) = 5;
std::cout << *(myClass.uivar) << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误(-警告):Dereferencing NULL pointer uivar位于*(uivar) = *(mCopy.uivar);.
我缺少什么?
您的复制构造函数不正确,它需要分配自己的指针
MyClass(const MyClass& mCopy) {
uivar = new unsigned int(*mCopy.uivar);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |