指向派生类的基类指针
时间: 2024-12-28 17:22:35 浏览: 1
### C++ 中使用基类指针指向派生类对象
在C++中,通过让基类指针指向派生类对象来实现多态性是一种常见做法。这种方式不仅提高了代码的灵活性和可扩展性,还支持运行时绑定机制。
#### 定义基类与派生类
首先定义一个带有虚函数的基类:
```cpp
class Base {
public:
virtual void show() const {
std::cout << "This is base class." << std::endl;
}
};
```
接着创建一个继承自`Base`的派生类,并重写虚函数`show()`:
```cpp
class Derived : public Base {
public:
void show() const override {
std::cout << "This is derived class." << std::endl;
}
};
```
#### 创建并操作对象
下面展示如何声明基类类型的指针,并让它指向不同类型的对象实例:
```cpp
int main(){
Base* ptr;
// 让ptr指向base对象
Base bObj;
ptr = &bObj;
ptr->show();
// 让同一个ptr指向derived对象
Derived dObj;
ptr = &dObj;
ptr->show();
return 0;
}
```
上述程序会依次调用两个版本的`show()`方法[^1]。第一次输出来自基础类的消息;第二次则展示了派生类特有的行为——这就是所谓的“编译期静态联编”转变为“运行期间动态联编”。
需要注意的是,在实际应用中通常会在堆上分配这些对象以便更好地管理生命周期,此时应考虑使用智能指针如`std::unique_ptr<Base>` 或 `std::shared_ptr<Base>` 来代替原始裸指针以确保资源安全释放[^3]。
对于更复杂的场景下可能还需要借助于`dynamic_cast<>`来进行类型转换验证,尤其是在处理层次结构较深的情况下[^2]。
阅读全文