关于类限定符private的范围--自我反省

   其实并不算新发现,只是我在平常的时候没注意到这一点。

1.#include<iostream>  
2.using namespace std;  
3.  
4.class String  
5.{  
6.public:  
7.    String(const char *str = NULL);  
8.    String(const String &other);  
9.    ~String(void);  
10.    String & operator=(const String &other);  
11.    bool operator==(const String &str);  
12.    friend ostream & operator<<(ostream& o,const String &str);  
13.private:  
14.    char *m_data;  
15.}; 

 

  就拿string类的拷贝构造函数来说:

37.String::String(const String &other)  
38.{  
39.    int len = strlen(other.m_data);  
40.    m_data = new char[len+1];  
41.    strcpy(m_data,other.m_data);  
42.} 


 other.m_data,注意到没,本来是个private,就我以前的认识,相对于other代表的对象本身,other.m_data是在外部调用,对此,我纠结了。虽然这拷贝构造函数已经通用是没问题的,但是我还是钻牛角似的和别人讨论,自己又另外编写小代码测试,因为之前的概念已经根深蒂固,但,最后确实低头认输,private确实只认该类的“类内”和“类外”.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值