其实并不算新发现,只是我在平常的时候没注意到这一点。
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确实只认该类的“类内”和“类外”.