1. 变量属性与继承之间的关系

#include <iostream>
using namespace std;
class A {
public:
int x;
protected:
int y;
private:
int z;
}; class B : public A {
// x is public
// y is protected
// z is not accessible from B
}; class C : protected A {
// x is protected
// y is protected
// z is not accessible from C
}; class D : private A {
// x is private
// y is private
// z is not accessible from D
};

  

2. 可见性

Only members/friends of a class can see private inheritance and only members/friends of derived class can see protected inheritance

protected member provides enhanced access for derived classes

private member keep implementation details

3. private 成员不能直接访问, 但是可以间接的通过函数的调用进行访问. 无论是哪种形式的继承, 基类的变量都会被子类继承下来, 所不同的仅是有些变量不可访问, 即 not accessible

4. 友元. 一个类友元(包括友元函数或友元类的所有成员函数) 可以访问该类的任何成员( 包括成员变量和成员方法)

5. 除去上面所说的几条内容, 有一种技术叫做 member spy(类成员间谍), 通过该技术, 派生类可以将基类的 protected 成员修改成 public 权限, 这种技术用到了 using 关键字

C++ 访问控制 public, protected, private, 友元的更多相关文章

  1. 快速理解类的访问控制(public,protected,private)

    接触过面向对象编程的朋友们都知道类中的访问控制符无非有三个,public, protected, private. 理解他就先从期望他达到的效果先说吧 Public: 使成员对于整个程序内(类内类外) ...

  2. 访问控制public/protected/private的区别

    Java支持四种不同的访问权限: 修饰符 说明 public 共有的,对所有类可见. protected 受保护的,对同一包内的类和所有子类可见. private 私有的,在同一类内可见. 默认的 在 ...

  3. C++ 类访问控制(public/protected/private)

    第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问. 不能被任何其他访问,该类的对象也不能访问. protec ...

  4. 【转载】C++中public,protected,private访问

    第一:private, public, protected 访问标号的访问范围. 假如我们约定: 类内部-----指的是当前类类型的定义中,以及其成员函数的声明和定义中: 类外部-----指的是不在当 ...

  5. 【转】C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意

    大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问.没有深究.其实这里面真是 ...

  6. C++中public,protected,private派生类继承问题和访问权限问题

    C++中public,protected,private派生类继承问题和访问权限问题 当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定. 1. ...

  7. JAVA修饰符类型(public,protected,private,friendly)

    转自:http://www.cnblogs.com/webapplee/p/3771708.html JAVA修饰符类型(public,protected,private,friendly) publ ...

  8. php public protected private属性实例详解

    php 类中函数和类变量都有三个属性:public protected private,具体什么时候使用什么属性好纠结,特意找了个实例,这样看起来更清晰. public 表示全局,类内部外部子类都可以 ...

  9. JAVA类型修饰符(public,protected,private,friendly)

    JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...

随机推荐

  1. `libsass` bindings not found. Try reinstalling `node-sass`?

    本篇文章由:http://xinpure.com/libsass-bindings-not-found-try-reinstalling-node-sass/ 坑一记 `libsass` bindin ...

  2. js处理url

    需求:用js获得url的电话号码和状态 针对url地址:http://www.deikang.com/index.php?tel=15811296111&status=1&id=100 ...

  3. angularjs requeirjs配置相关

    尝试了网上的yeoman generator 生成的脚手架项目不甚理想 npm install -g generator-angular-require yo angular-require 就不用那 ...

  4. android:hint属性对TextView的影响

    近期看到同事写的一段代码,非常easy吧就是: <LinearLayout android:layout_width="wrap_content" android:layou ...

  5. 硬盘Raid

    一.raid什么意思? RAID是“Redundant Array of Independent Disk”的缩写,raid什么意思了?说白了,中文翻译过来通俗的讲就是磁盘阵列的意思,也就是说RAID ...

  6. mongodb查询实练

    1.mongodb中如何查询 (a=1 or b=2) and (c=3 or d=4)//格式:db.collection.find({"$and":[{第一个条件},{第二个条 ...

  7. RVM(ruby version manage)安装指南

    一.安装需要3步gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \c ...

  8. atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4

    atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4 目前近况:: 更换数据库,但是是使用spring集成的. <!-- hibernate配置文件路径 --> ...

  9. dom写xml

    1.引入包 import xml.dom.minidom 2.writexml方法 writexml(writer, indent, addindent, newl, encoding) writer ...

  10. libvirt网络过滤规则简单总结

    libvirt网络过滤规则, 一个过滤规则定义的示例: < filter name='no-ip-spoold'chain='ipv4' >  < uuid >fce8ae33 ...