#include <iostream>
#include <cstring>
using namespace std;
class String
{
private:
char* m_data;
public:
String(const char* cstr);
String(const String& str);
~String();
char* get_str() const {return m_data;}
char* change_str(const char* str)
{
strcpy(m_data, str);
return m_data;
}
};
String::String(const char* cstr = 0)
{
if(cstr)
{
m_data = new char[strlen(cstr) + 1];
strcpy(m_data,cstr);
}
else
{
m_data = new char[1];
*m_data = '\0';
}
}
inline String::String(const String& str)
{
m_data = new char[strlen(str.m_data)+1];
strcpy(m_data,str.m_data);
}
String::~String()
{
delete[] m_data;
}
ostream& operator<<(ostream &os,const String &str)
{
os << str.get_str() ;
return os;
}
main()
{
String A("hello");
String B = A;
cout << &
初识C++(5)-带指针类的拷贝(一)
最新推荐文章于 2024-06-24 11:58:17 发布
本文探讨了在C++中,当使用简单赋值方式如B = A来拷贝一个带有指针成员的类实例时,预期与实际结果的差异。通常预期A和B的指针会指向同一内存区域,导致两者同步变化,但实验结果显示并非如此。
摘要由CSDN通过智能技术生成