继承

注意:不是所有的函数都能继承;构造函数、析构函数和 operator:= 不能继承
重载:同名不同参的函数名称的重载;
重写:子类对父类函数的重写;
隐藏:
覆盖:

声明 继承
private 私有声明 私有继承
protected 保护声明 保护继承
public 公有声明 公有继承



声明: 是对类中属性做权限声明;

私有声明:仅基类可以访问,派生类和基类类对象不可直接访问;
保护声明:基类和派生类可以直接访问;类对象不可直接访问;
公有声明:基类,派生类,基类对象都可以直接访问;


继承 对可以继承下来的成员,私有成员继承下来是不可以访问的,保护成员和公有成员继承下来是可以访问的。继承前面加限定,限定是对可以访问的成员做权限设置;

私有继承:把可访问的成员设成私有声明;
保护继承:把可以访问的成员设成保护声明;
公有继承:不修改可以访问的成员的声明;


注意:有虚函数时,会自动继承虚指针,并映射对应的虚函数表

#include <stdio.h>  
#include <iostream>  
using namespace std;  
  
class A  
{  
protected:  
    int m_data;  
public:  
    A(int data = 0)  
    {  
        m_data = data;  
    }  
    int GetData()  
    {  
        return doGetData();  
    }  
     int doGetData()  
    {  
        return m_data;  
    }  
};  
  
class B: public A  
{  
protected : int m_data;  
public:   
    B(int data = 1)  
    {  
        m_data  =  data;  
    }  
    int doGetData()  
    {  
        return m_data;  
    }  
  
};  
  
class C : public B  
{  
protected :  int m_data;  
public :  
    C(int data = 2)  
    {  
        m_data = data;  
    }  
};  
int main()  
{  
    C c(10);  
    cout<<c.GetData() << endl;  
    cout<<c.A::GetData()<<endl;  
    cout<<c.B::GetData()<<endl;  
    cout<<c.C::GetData()<<endl;  
  
    cout<<c.doGetData()<<endl;  
    cout<<c.A::doGetData()<<endl;  
    cout<<c.B::doGetData()<<endl;  
    cout<<c.C::doGetData()<<endl;  
    //cout << A::doGetData()<<endl;  这种调用方式是错的  
    return 0;  
}  
  
/* 
结果为  0 0 0 0 1 0 1 1 
*/  

  1 #include <iostream>
  2 using namespace std;
  3 
  4 class A {
  5 public:
  6         static void doGetData() {
  7                 cout << "A" << endl;
  8         }
  9 };
 10 
 11 class B: public A
 12 {
 13 public:
 14          void doGetData() {
 15                 cout << "B" << endl;
 16          }
 17 };
 18 
 19 class C : public A {
 20 public:
 21         static void doGetData() {
 22                 cout << "C" << endl;
 23         }
 24 };
 25 
 26 
 27 int main()
 28 {
 29         B  b ;
 30         b.doGetData();
 31         b.A::doGetData();
 32 
 33         // B::doGetData(); // 错误
 34 
 35         C::doGetData();
 36 
 37         return 0;
 38 }

  
/* 
结果为  
B 
A 
C
*/  
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容

  • 类的继承与派生 类的继承就是新类由已经存在的类获得已有特性,类的派生是由已经存在的类产生新类的过程。已有类叫做基类...
    Mr希灵阅读 609评论 0 1
  • 转自大神博客凡程子 一、基本概念 类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派...
    leon4ever阅读 480评论 0 0
  • 一、继承和多态在面向对象编程中,继承(也称为派生)让您能够创建新类,而这些类继承了父类(也称为基类)的特征和行为。...
    CarlDonitz阅读 841评论 0 2
  • 注意:本文中代码均使用 Qt 开发编译环境类的继承与派生?以原有的类为基础产生新的类,我们就说新类继承了原有类的特...
    赵者也阅读 1,465评论 0 1
  • Android NDK开发之旅 目录 C++ 继承 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一...
    香沙小熊阅读 1,149评论 0 0