`

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++编程中,遵循标准和良好的编程习惯至关重要,因为这直接影响到代码的可读性、移植性和维护性。以下是一些常见的误区及其解释: 1. **头文件包含误区**:在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++小游戏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++面试八股文深度总结

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

    千锋C++笔记.zip

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

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

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

    尚硅谷2015C++全套视频

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

    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++课件 C++课件

    C++中的封装是通过访问修饰符(public、private、protected)实现的,它可以保护对象的内部状态不被外部随意修改,从而提高代码的安全性。继承则允许一个类(子类)从另一个类(父类)中继承属性和行为,减少了代码...

    概述C++中的 public protected private friend关键字的用法

    一个C++类中的变量如果如下关键字作为修饰符. 1. public: 程序的任何...下面在看下c++ public private protected关键字 1、当在类的内部使用这三个关键字,表示访问权限:  public: 可以被任意访问。  protected:

    实用C++的CHM集合

    《实用C++的CHM集合》是一份涵盖了C++编程领域的综合资源,包含了从基础知识到高级应用的广泛内容。这份集合共包含九个CHM( Compiled Help Manual)文件,是学习和查阅C++相关知识的理想工具。以下是这些CHM文件所...

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

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

Global site tag (gtag.js) - Google Analytics