第16条 (几乎)私有
顺序,顺序。这里说的是重载三部曲——名字查找,重载决议,可访问性检查。这里写这个是因为重载决议在可访问性检查之前。所以出现可访问性问题,编译器不会因为隐式转换而通过重载避开,这里就是一个编译错误。Public和private是控制可访问性,而不是可见性,这点很重要。
对于一个私有变量来说,似乎是无法保护的,C++中 存在强大的指针,可以在知道内存布局的情况下,进行很越轨的操作。但是目前我不清楚如何对函数进行同样的控制,我不能通过对象知道成员函数的地址,也许虚 函数的指针是个契机,我没有具体尝试过,事实上,这是牛角尖的问题。具有访问权限的函数也有能力泄漏成员的指针,而把权力授权给他人。
在这个地方模板函数也是问题所在,因为可以针对模板函数进行特化,在特化函数中的得到访问授权。