C++本类可以访问本身类的私有成员(即拷贝构造函数可以访问本身对象的私有成员)

时间:2021-08-19 19:25:15
#include <iostream>
#include <string>
using namespace std;

class String
{
public:
	String(const char *str=NULL);
	String(const String &another);
	~String();
	String& operator=(const String& rhs);	
private:
	char* m_data;
};

String::String(const char *str)
{
	if(str==NULL)
	{
		m_data=new char(0);
		*m_data='\0';
	}
	else
	{
		m_data=new char[strlen(str)+1];
		strcpy(m_data,str);
	}
}
String::String(const String &another)
{
	m_data=new char[strlen(another.m_data)+1];//这里是可以直接访问类的私有成员的
	strcpy(m_data,another.m_data);
}

String::~String()
{
	delete[] m_data;
}
int main()
{
	String s("12");
	//cout<<s.m_data<<endl;
	String test=s;
	//cout<<test.m_data<<endl;
	
	return 0;
}