49派生类的声明方式和构成

简介: 49派生类的声明方式和构成

C++入门——60s从0到1

派生类的声明方式和构成

 

在C++中,派生类是通过继承(`:`)关键字来声明的。派生类继承了基类的成员,并可以添加新的成员或重写基类的成员。

 

派生类的声明方式

 

声明一个派生类的方式如下:

 

class DerivedClass : public BaseClass {

   // 成员列表

};

 

其中,`DerivedClass` 是派生类的名称,`BaseClass` 是基类的名称。在 `:` 后面可以加上 `public`、`protected` 或 `private` 来指定继承方式。如果不指定继承方式,则默认为 `public` 继承。

 

公有继承

 

如果使用公有继承(`public`),基类的公有成员和保护成员在派生类中保持相同的访问权限,而基类的私有成员在派生类中是不可访问的。

 

class DerivedClass : public BaseClass {

   // 成员列表

};

 

保护继承

 

如果使用保护继承(`protected`),基类的公有成员和保护成员在派生类中变为保护成员,而基类的私有成员在派生类中是不可访问的。

 

class DerivedClass : protected BaseClass {

   // 成员列表

};

 

私有继承

 

如果使用私有继承(`private`),基类的公有成员和保护成员在派生类中变为私有成员,而基类的私有成员在派生类中是不可访问的。

 

class DerivedClass : private BaseClass {

   // 成员列表

};

 

多重继承

 

一个派生类可以同时从多个基类继承,这种继承方式称为多重继承。在声明多重继承时,需要在 `:` 后列出所有基类名称,中间用逗号分隔。

 

class DerivedClass : public BaseClass1, public BaseClass2 {

   // 成员列表

};

 

构造函数和析构函数

 

当创建一个派生类对象时,会调用其构造函数来初始化对象。与普通函数不同,构造函数没有返回类型,并且名称必须与类名相同。构造函数可以被声明为默认构造函数、拷贝构造函数、移动构造函数等。

 

同样地,当一个派生类对象超出作用域时,会调用其析构函数来释放资源。析构函数必须为虚函数以便正确地进行多态析构操作。

 

示例代码

 

下面是一个简单的示例代码,演示如何声明和使用一个派生类:

#include <iostream>
using namespace std;
 
// 基类 Shape 的声明
class Shape {
public:
    Shape() { cout << "Shape constructor" << endl; }
    virtual ~Shape() { cout << "Shape destructor" << endl; }
    virtual void draw() = 0;  // pure virtual function
};
 
// 派生类 Circle 的声明
class Circle : public Shape {
public:
    Circle() { cout << "Circle constructor" << endl; }
    ~Circle() { cout << "Circle destructor" << endl; }
    void draw() override { cout << "Drawing a circle..." << endl; }  // 重写 draw 方法
};
 
int main() {
    Circle c;  // 创建 Circle 对象
    return 0;  // main 函数结束,程序退出时自动调用 Circle 的析构函数
}

在这个示例中,我们定义了一个 `Shape` 基类和一个 `Circle` 派生类。`Circle` 从 `Shape` 公有继承而来,并重写了 `draw` 方法。在 `main` 函数中创建了一个 `Circle` 对象 `c`,当程序退出时会自动调用 `Circle` 的析构函数来释放资源。

 

目录
相关文章
|
存储 编译器 程序员
【C++】类与对象(一)类的定义 访问限定符 类的实例化 this指针
【C++】类与对象(一)类的定义 访问限定符 类的实例化 this指针
|
6月前
|
C++
C++程序中的类声明与对象定义
C++程序中的类声明与对象定义
68 1
|
6月前
|
C++
26类的声明和对象的定义
26类的声明和对象的定义
36 0
|
C语言 C++
<c++> 类与对象 | 面向对象 | 访问说明符 | 类的声明 | 创建类
<c++> 类与对象 | 面向对象 | 访问说明符 | 类的声明 | 创建类
99 0
怎样声明一个类不会被继承,什么场景下会用?
怎样声明一个类不会被继承,什么场景下会用?
70 0
|
编译器
C++11之继承构造函数(using 声明)
C++11之继承构造函数(using 声明)
250 0
|
C++
C++类和对象的声明、解析、使用(构造、析构函数、友元、命名空间)
C++类和对象的声明、解析、使用(构造、析构函数、友元、命名空间)
79 0
|
缓存 Java 编译器
C++中为多态基类声明虚析构函数
C++中为多态基类声明虚析构函数
213 0