一个C++的基本问题
本来在新手区发帖了,但是似乎没有满意的解答,所以特地在这里重发一贴:
class B{private: void PrivateFunc(){cout<<"BPrivateFunc"<<endl;};public: void PublicFunc(){cout<<"BPublicFunc"<<endl;}};class A{private: void PrivateFunc(){cout<<"APrivateFunc"<<endl;};public: void PublicFunc(){cout<<"PublicFunc"<<endl;} void additionalFunction(A a, B b) { a.PrivateFunc(); a.PublicFunc(); b.PublicFunc(); }};additionalFunction函数中为什么可以使用a.PrivateFunc()答:因为你是通过你的public 去访问你的private,这个都是属于A,假如去访问B的private是禁止的!
[解决办法]
这是在类的定义体内所使用私有成员。
在外面就不能使用了吧。友元可以访问
[解决办法]
private: 在本类的作用域可以访问, 而additionalFunction的函数体仍然属于本类的作用域,所以可以访问。
[解决办法]
楼主是不是误认为A a,是类外访问了呢,由于还在类体内,应属于类内访问,所以A类的私有成员函数可以访问,B的私有成员函数不可以访问。