`

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++Protected介绍

    在C++中,`protected`是一个访问修饰符,它用于控制类的成员(变量和函数)的访问权限。本章将深入探讨`protected`关键字及其在面向对象编程中的作用。 `protected`成员与`private`成员类似,都限制了对它们的直接...

    C-C++ 常见误区

    在深入探讨《C-C++ 常见误区》这一主题之前,我们首先应当明确C与C++之间的关系及其发展脉络。C++并非C语言的简单扩展,而是基于C语言的一种全新的编程语言,由Bjarne Stroustrup于1983年在贝尔实验室创建。C++在C的...

    C、C++语言误区之:voidmain().pdf

    关于`void main()`的误区: 虽然在某些编译器(如vc6)中,`void main()`可能会编译通过,但这并不是标准所允许的。`void main()`不符合C或C++的规范,因为它没有指定返回类型,而标准规定`main()`函数必须返回`int`...

    C++C++C++C++C++C++C++

    C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++

    c++小游戏 c++小游戏

    c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏...

    Effective Modern C++:改善C++11和C++14的42个具体做法(中文版 + 英文版)

    《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和...

    千锋C++笔记.zip

    5. **封装**:封装是面向对象的三大特性之一,通过访问修饰符(public、private、protected)实现对成员变量和函数的访问控制,保护数据不被非法修改。 6. **继承**:继承允许一个类(子类)从另一个类(父类)继承...

    C++面试八股文深度总结

    4. 在C++中,可以将struct作为类来使用,包含成员函数和虚函数,同时可以有public、protected、private的访问控制,而在C语言中,struct仅用于数据结构。 关于头文件的引用,双引号""用于引用项目内的自定义头文件...

    尚硅谷2015C++全套视频

    类的设计、对象的创建与销毁、构造函数与析构函数、访问修饰符(public、private、protected)以及友元机制都是关键内容。 3. **指针与引用**:C++中的指针是其强大之处,也是难点之一。教程会涵盖指针的基本操作、...

    基于C/C++ 常见误区详解

    在C/C++编程中,有一些常见的误区需要程序员们特别注意,以避免在开发过程中遇到问题。以下是关于这些误区的详细解释: 1. C++与C的关系:C++并不是C的升级版,它们是两种独立的语言,各有自己的标准委员会。C++98...

    C++编程实例100篇

    《C++编程实例100篇》是一本深入浅出的C++编程教程,它以实践为主导,通过丰富的实例帮助学习者掌握C++语言的基础和核心概念。这本书的每个实例都精心设计,旨在帮助初学者和有经验的开发者巩固和提升C++编程技能。 ...

    21天学通C++(第五版) vs2008程序打包 深入浅出MFC 浙大教材C++达内 C++ 华为C++培训资料 visual c++_MFC

    21天学通C++(第五版) vs2008程序打包 深入浅出MFC 浙大教材C++达内 C++ 华为C++培训资料 visual c++_MFC 资源内容: visual c++_MFC 达内 C++ C++课件.ppt c++源码 .rar Core C++ Programming_new.ppt Core C++ ...

    高效C++中级编程教程

    《高效C++中级编程教程》是一份针对有一定C++基础的学习者精心编撰的课程资料。这份教程旨在深化对C++编程思想的理解,特别是面向对象的编程思想,以及这一思想在实际编程中的应用技巧。教程内容丰富,涵盖了C++语言...

    黑马程序员匠心之作 C++教程_第5阶段-C++提高编程资料讲义.rar

    在C++中,通过访问控制(public, private, protected)实现封装,可以保护数据免受非法访问。 4. **继承**:继承允许一个类(子类)继承另一个类(父类)的特性,这样可以复用代码并创建层次结构。理解单一继承和...

    c++builder6安装包

    C++Builder 6是一款由Borland公司(后被Embarcadero Technologies收购)开发的集成开发环境(IDE),主要用于C++编程语言的应用程序开发。它结合了强大的编译器、调试器、可视化设计工具和其他实用功能,为开发者...

    The C++ Programming Language(C++编程语言)第三版英文+中文特别版

    理解类的设计、构造函数、析构函数、成员函数以及访问修饰符(public、private、protected)至关重要。 3. **模板**:C++的模板允许编写泛型代码,可以应用于不同类型的数据,增强了代码的复用性。 4. **异常处理*...

    C++练习题(适合新手)

    - **类成员访问控制**:在C++中,类的成员可以设置为public、private或protected。Public成员对所有代码开放,可以在类外访问;Private成员仅在类内部可访问;而Protected成员对类本身以及其派生类开放。 - **this...

Global site tag (gtag.js) - Google Analytics