摘要:
C#访问同类实例的私有成员代码大家都知道,一个类的私有成员只能在他的内部访问!但是不知道大家注意到没有,实际上在C#中一个类的实例是可以访问同一个类的另外一个实例的私有成员的。请看这段简单的代码public class MyClass { private int i = 0; public void Function() { MyClass a = new MyClass(); Console.WriteLine( a.i); //这里成功访问了另外的一个实例a的私有实例字段 } }大家也可以自己写一段类似的代码来测试一下,的确是可以访问另外一个实例的私有成员!为什么呢?因为C#就是一开始就是 阅读全文
摘要:
问题的起源: 我在看新版的《C++编程思想》的时候,看到拷贝构造函数章节处大致有这么一,非常不解: Class A { int n; //私有的n public: A(const A& a): n(a.n){} //为什么可以调用a.n,n明明是私有的 } 另外在重载=操作符的时候也有这样的问题。 后来得到的答案是:private是限定异类之间的访问,而不是限定同类不同对象的访问 只有smalltalk是连同类不同对象的访问都限制的 这样就清楚明白的回答了为什么拷贝构造函数可以根据一个对象完整的复制出另一个对象。 但是这样似乎有点不对劲,这样也就是说C++中的一个类是他自己的友员,那样 阅读全文