Private
1. private的可见性:
私有成员对于任何能够看到其所属类定义的代码来说都是可见的。他会参与名字查找和重载决议, 因而可能使调用变得无效或具有二义性, 即使它本身可能永远不会被调用。
2. private的可访问性:
具有对某个成员的访问权的代码可以通过泄露该成员的指针的方式将其访问权限授予其他任何代码。
成员的名字只对其所属类的其他成员或者友元来说是可访问的, 而这里的其他成员也包括成员模板的任何显示特化。
class X{
public:
template<class T> void f(const T& t){...}
private:
int private_;
};
struct Y{};
template<>
void X::f(const Y&){
private_ = 2;
}