c++拷贝构造函数和赋值操作符
c++ primer中有一道这样的题目:
Matrix类,其中,实际矩阵在构造函数中动态分配,在析够函数中删除。这个类的定义需要用到拷贝构造函数和赋值操作符。
不明白为什么? C++ 类 拷贝构造函数 赋值操作符
[解决办法]
http://en.wikipedia.org/wiki/Deep_copy#Deep_copy
[解决办法]
#include <iostream>
using namespace std;
class A
{
private:
char* m_name;
public:
explicit A(const char* name)
{
int len = strlen(name);
m_name = new char[len + 1];
strcpy(m_name, name);
}
~A() {delete[] m_name;}
/*
A(const A& rhs)
{
int len = strlen(rhs.m_name);
m_name = new char[len + 1];
strcpy(m_name, rhs.m_name);
}
A& operator=(const A& rhs)
{
if (this == &rhs) //判断自我复制
return *this;
delete[] m_name;
int len = strlen(rhs.m_name);
m_name = new char[len + 1];
strcpy(m_name, rhs.m_name);
}
*/
friend ostream& operator<<(ostream& os, const A& rhs)
{
os << (void*)rhs.m_name << ":" << rhs.m_name;
return os;
}
};
int main()
{
A* a= new A("zhang san");
cout << *a << endl;
A b = *a;
cout << b << endl;
delete a;
cout << b << endl;
return 0;
}