C++中base
时间: 2025-03-13 09:15:03 AIGC 浏览: 42 评论: 4
### C++ 中 `base` 的概念及相关用法
在 C++ 编程语言中,“基类”通常被称为 **Base Class**,而派生类则称为 **Derived Class**。虽然 C++ 并没有显式的 `base` 关键字,但在实际编程过程中,开发者经常通过上下文提到“基类”的概念来描述继承关系。
#### 1. 基类与派生类的关系
当定义一个类时,可以通过冒号 (`:`) 来指定该类是从另一个类派生出来的。这种机制允许子类(即派生类)继承父类(即基类)中的属性和行为。例如:
```cpp
class Base {
public:
void greet() const { std::cout << "Hello from Base!" << std::endl; }
protected:
void info() const { std::cout << "Base info." << std::endl; }
};
class Derived : public Base {
public:
using Base::info; // 提升受保护成员到公共访问级别
};
```
上述代码展示了如何让 `Derived` 类从 `Base` 类继承[^1]。这里的关键点在于 `: public Base` 部分,它表明了 `Derived` 是基于 `Base` 创建的一个新类。
#### 2. 访问控制与继承方式
C++ 支持三种主要的继承模式:公有继承 (`public`)、私有继承 (`private`) 和受保护继承 (`protected`)。这些修饰符决定了派生类以及外部世界可以怎样访问基类的内容。
- 如果采用的是 `public` 方式,则基类中的所有公开成员都会成为派生类的一部分,并保持其原始可见性。
- 若选择 `private` 或者 `protected` 形式的话,那么即使原本是开放给用户的接口也可能被隐藏起来仅供内部调用。
#### 3. 虚函数与多态实现
为了支持动态绑定或者说运行时期间决定应该执行哪个版本的方法操作——也就是所谓的“多态”,我们需要引入虚拟函数的概念。这涉及到两个重要关键词:`virtual` 及 `override`。
```cpp
class Animal {
public:
virtual void speak() const = 0;
};
class Dog : public Animal {
public:
void speak() const override { std::cout << "Woof!"; }
};
```
在这个例子里面,我们声明了一个纯虚函数作为抽象基类的基础功能之一;随后在其具体化的后代那里重新实现了这个动作逻辑[^2]。
#### 4. 特殊情况下的注意事项
值得注意的一点是,尽管普通的对象实例无法体现出来真正的多态特性,但是当我们借助于指针或者引用形式处理实体的时候,这一切就变得可能起来了。这是因为只有在这种间接寻址情况下才会有机会触发相应的底层替换机制从而达成预期效果[^4]。
---
### 示例程序展示完整的继承体系结构
以下是综合以上知识点构建的一个小型案例演示整个流程:
```cpp
#include <iostream>
using namespace std;
// 定义基类
class Shape {
public:
virtual double area() const = 0; // 抽象方法
virtual ~Shape() {} // 虚拟析构器很重要!
protected:
string name_;
public:
explicit Shape(const string& name):name_(name){}
friend ostream& operator<<(ostream&, const Shape&);
};
// 输出运算符重载以便打印形状名称
ostream& operator<< (ostream &os, const Shape &s){
os<<"This is a "<< s.name_ ;
return os;
}
// 圆形类继承自 shape
class Circle : public Shape{
private:
float radius_;
public:
Circle(float r=1.f):Shape("Circle"),radius_{r}{}
double area() const override{return M_PI*radius_*radius_;}
};
int main(){
Circle c(5);
cout<<c<<"\nArea:"<<c.area()<<'\n';
}
```
此段代码片段不仅体现了基本的继承原理还包含了必要的销毁过程考虑以防止内存泄漏等问题发生。
---
阅读全文
相关推荐


















评论

IYA1738
2025.08.25
通过实例代码展示了C++中的继承、多态以及虚函数的实际应用。

航知道
2025.06.21
继承、多态和虚函数是C++面向对象编程的重要组成部分,该文档解释得很透彻。

金山文档
2025.05.09
C++继承机制的详细解读,涵盖了基类与派生类的关系、访问控制及多态实现等核心概念。

杜拉拉到杜拉拉
2025.03.24
文档提供了关于如何在C++中利用继承实现类的层次结构和多态性的清晰说明。