C++ 是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。C++ 面向对象编程有三大特性,它们是封装、继承和多态。本文主要介绍C++ 面向对象 继承。

1、C++ 继承(子类和父类)

在C ++中,可以将属性和方法从一个类继承到另一个类。继承分为两类:

派生类(子类):从另一个类继承的类

基类(父类):从其继承的类

要从类继承,需要使用:符号。

例如,

#include <iostream>
using namespace std;
class MyClass {     // class
  public:           //  访问修饰符
    MyClass() {     // 构造函数
      cout << "Hello World!";
    }
};
int main() {
  MyClass myObj;    // 创建MyClass的一个对象(会调用构造函数)
  return 0;
}

2、C++ 多继承

上面的继承只是从一个基类继承,如果一个类有多个基类,这样的继承关系称为多继承。

语法:

class 派生类名: 访问控制符 基类名1,访问控制符 基类名2
{
数据成员和成员函数声明;
}

例如,

#include <iostream>
using namespace std;
//C++提供虚继承机制,防止类继承关系中成员访问的二义性。
//当类中出现virtual时,C++编译器会对象添加一个vptr指针,同时会产生一个虚函数表
class A
{
public:
    int x;  //4
public:
    A()
    {
        cout << "A" << endl;
    }
};
class B:virtual  public A
{
    int b; //4
public:
    B(int x)
    {
        this->x = 10;
        cout << "B" << endl;
    }
};
class C :virtual public A
{
    int c; //4
public:
    C(int x)
    {
        this->x = 20;
        cout << "C" << endl;
    }
};
class D :public B,public C
{
    int d; //4 
public:
    D(int x):B(10),C(20)
    {
        this->x = 30;
        cout << "D" << endl;
    }
};
int main()
{
    cout << sizeof(A) << endl;   //4
    cout << sizeof(B) << endl;   //12
    cout << sizeof(C) << endl;   //12
    cout << sizeof(D) << endl;   //24
    return 0;
}

推荐文档