IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++_继承 -> 正文阅读

[C++知识库]C++_继承

直接开冲 奥力给!!! O(∩_∩)O
以下内容 皆为 我用自己的语言表述 大家可以多多提意见


1.继承的方式

public:以公有方式继承父类,则父类中若有public属性成员则在子类中依然是public属性,其他属性不变.
	该继承方式的子类在子类中除了不能访问父类中的private属性,其他的属性成员都可以访问.在子类外只能访问子类  
	中的public属性和父类的public属性.
protected:以保护方式继承父类,则父类中的public成员在子类中变为protect属性,只能在子类中
	访问父类的public和protected成员.,在子类外只能访问子类的public属性,无法通过子类去访问父类的public属性.
private:以私有方式继承父类,则父类中的所有属性成员在子类中皆为私有,在子类中都不能访问父类.

如果缺省继承方式,则默认为私有继承


2.子类成员的构造和初始化

#include <iostream>
using namespace std;

class A{
public:
    int a;
public:
    A(int a=0):a(a){
        cout << "A()" << endl;
    }
    void show(){
        cout << a << endl;
    }
};

class B{
public:
    int b;
public:
    B(int b=0):b(b){
        cout << "B()" << endl;
    }
    void show(){
        cout << b << endl;
    }
};

class C:public A,public B{
public:
    int c;
public:
    C(int a=1,int b=1,int c=1):A(a),B(b),c(c){	//在子类C中调用构造函数去初始化,构造函数调用的顺序为继承的顺序
        cout << "C()" << endl;
    }
};

int main(){
    /*	当C中构造为无参构造时,可以用这种方法
    C s;
    s.c = 4;
    cout << s.c << endl;
    cout << s.b << endl;
    cout << s.a << endl;
    s.a = 1;
    s.b = 2;
    //cout << s.a << endl;
    A& s1 = s;
    cout << "****************" << endl;
    cout << s1.a << endl;
    */
   C s(2,3,4);
   cout << s.c << endl;
    return 0;
}
以下为输出结果:

A()
B()
C()
4


3. 基类子对象

	概念:每个子类中都包含着父类的对象成员.
	意义:那么意味着可以通过子类来获取父类中的信息.
#include <iostream>
using namespace std;

class A{
private:
    int a1;
public:
    int a;
public:
    A(int a=0,int a1 = 1):a(a),a1(a1){
        cout << "A()" << endl;
    }
    void show(){
        cout << a << endl;
        cout << a1 << endl;
    }
};

class B{
public:
    int b;
public:
    B(int b=0):b(b){
        cout << "B()" << endl;
    }
    void show(){
        cout << b << endl;
    }
};

class C:public A,public B{
public:
    int c;
public:
    C(int a=1,int a1 = 1,int b=1,int c=1):A(a,a1),B(b),c(c){
        cout << "C()" << endl;
    }
    void show(){
        cout << c << endl;
    }
};

int main(){
    /*
    C s;
    s.c = 4;
    cout << s.c << endl;
    cout << s.b << endl;
    cout << s.a << endl;
    s.a = 1;
    s.b = 2;
    //cout << s.a << endl;
    A& s1 = s;
    cout << "****************" << endl;
    cout << s1.a << endl;
    */
   C s(2,3,4,5);
   //cout << s.c << endl;
   A& sa = s;
   B& sb = s;
   sa.show();
   sb.show();
   cout << &sa << endl;	//&sa的地址和&sb的地址不同说明,他们只是引用了各自的对象
   cout << &sb << endl;
    return 0;
}
输出结果为:

A()
B()
C()
2
3
4
0x61fe00
0x61fe08

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 10:37:43  更:2021-09-05 10:39:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:31:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码