`

c++ protected误区

c++ 
阅读更多
发现以前对protected的用法一直是错误的。

protected的继承的访问权限其实是相对于类的,而不是对象。这么说可能无法理解。看例子:

class Base{
protected:
    int a;
public:
    Base();
};

class Child{
public:
    Child();
    test(Child &c){
        c.a = 3;
    }

    test2(Base &b){
        b.a = 3;//error
    }
};

int
main(){
    Child child;
    Base base;
    child.test();//right
    child.test2(b);//error, 因为protected的作用范围其实是相对于类。所以只要是child类的实例都可以在类的范围内直接访问protected成员。
}

test2要想工作得写一个get_a();
Base::get_a(){return a;};
分享到:
评论

相关推荐

    c++primer第五版答案

    6. **访问控制**:public、private和protected关键字,用于控制类成员的可见性。 7. **继承与多态**:继承允许一个类(子类)从另一个类(父类)继承属性和行为,多态则允许通过基类指针或引用调用派生类的成员函数...

    C++99个常见错误.pdf

    可访问性控制符(`public`, `protected`, `private`)决定了类的成员对外部的可访问程度,而可见性则与作用域有关。混淆这两个概念可能导致类的成员被不当访问,从而破坏封装性。 #### 常见错误9:使用糟糕的语言 ...

    C++常见的99个错误

    - **正确做法**:理解并正确应用不同的访问控制符(如public、protected、private)。 **常见错误9:使用糟糕的语言** - **错误表现**:选择不合适的编程语言或库。 - **正确做法**:基于项目需求选择最适合的工具...

    C++程序设计教程课后习题答案【钱能】清华版

    C++是一种广泛应用于系统软件、应用软件、游戏开发、嵌入式系统等领域的高级编程语言。...同时,通过对比答案,学习者可以发现自己的思维误区,深化对C++语言的理解,提高编程技能,为今后的项目开发打下坚实基础。

    C++99个常见错误

    - **可访问性:** 控制类成员的外部访问权限,如public、protected和private。 - **可见性:** 指的是变量或函数是否可以在其他文件或作用域中被识别。 - **常见误区:** - **混淆概念:** 许多开发者混淆了可...

    高质量C++编程指南.doc

    - **修饰符位置**:如public、protected、private等修饰符的位置,通常位于它们所修饰的对象之前。 - **注释**:注释应清晰、简洁,用于解释代码功能而非描述代码逻辑。 - **类的版式**:类定义的结构和布局,包括...

Global site tag (gtag.js) - Google Analytics