class X
{
protected:
void protectedFunction() { cout << "I am protected" ; }
};
class Y : public X
{
public:
using X::protectedFunction;
};
int main()
{
Y y1;
y1.protectedFunction();
}
这样我就能够暴露基类的一个函数。
- 这难道不违反了封装原则吗?
- 为什么标准中要这样做,有特别的原因吗?
- 这个方法有什么用处,或者在新的标准中会被改变吗?
- 标准中是否有与此相关的未解决问题?
protected
封装不能被强制性地打破,我认为这并不是语言的失败。 - Andrew Noyes