c++拷贝构造函数可以访问私有成员
c++拷贝构造函数可以访问私有成员
startstorm 发表于10个月前
c++拷贝构造函数可以访问私有成员
  • 发表于 10个月前
  • 阅读 25
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

在学习拷贝构造函数的时候,突然发现拷贝构造函数里面可以访问私有成员。当时很疑惑,和c++类的private私有属性不同。但是编译器可以编译通过。

class  MyString
{
public:
	MyString(int len = 0);
	MyString(const MyString& s);
	~MyString();
private:
	int	m_len;
};
MyString::MyString(const MyString& s)
{
	m_len = s.m_len;
	m_p = new char[m_len + 1];
	strcpy(m_p, s.m_p);
}

引用C++标准原文
A member of a class can be
— private; that is, its name can be used only by members and friends of the class in which it is
declared.
— protected; that is, its name can be used only by members and friends of the class in which it is
declared, and by members and friends of classes derived from this class (see 11.5).
— public; that is, its name can be used anywhere without access restriction.

访问限制标号是针对类而不是针对一个类的不同对象,只要同属一个类就可以不用区分同一个类的不同对象。因为 是类的成员函数,所以有权限访问私有数据成员。如果是在main函数中直接,那肯定就会报错了,不能访问,因为这是在类外不能访问私有数据成员。一个类的成员函数可以访问这个类的私有数据成员,我们要理解这个对类的访问限制,而不是针对对象。

参考:http://http://blog.csdn.net/peng314899581/article/details/51895998

共有 人打赏支持
粉丝 7
博文 53
码字总数 21034
×
startstorm
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: