vector父类类型可以存放子类吗_C++小知识系列之“父类指针”和dynamic_cast!

本文探讨了C++中父类指针和子类对象的关系,指出父类指针可以指向子类对象实现多态,但不能直接访问子类特有的成员函数。通过示例代码展示了将子类指针强制转换为父类指针的场景,并解释了dynamic_cast的作用——安全地执行向下转型。强调了过度依赖dynamic_cast可能是设计问题,并提倡使用多态和静态类型检查来避免运行时转换。
摘要由CSDN通过智能技术生成
“OLDPAN博客”,侃侃而谈人工智能 深度酝酿优质原创文!

阅读本文需要 1X 分钟 ?

什么是父类指针

父类指针也可以称为基类指针,当父类(基类)指针指向派生类(子类)指针的时候,可以触发“多态的效果”。不过本文的重点不在“多态”,而是聊聊当父类指针和子类指针互相赋值时需要注意的问题。

d223e2c9aff26857280ec982445b0f4c.png
你懂得

废话不多说,直接看代码~

假设我们有两个类,一个是Base父类,另一个是Derived子类。

class Base //父类
{
public:
    virtual int fun() ; // 虚函数
};

int Base::fun()  // virtual 字段不用在函数体时定义{
    std::cout <"Base::fun()" <std::endl;
}

class Derived: public Base  //子类
{
public:
    int fun();
    int derived_fun();
    int derived_fun_fun();
private:
    int dummy = 1;
};
// 继承父类的函数
int Derived::fun()  {
    std::cout <"Derived::fun()" <std::endl;
}
// 子类独有函数
int Derived::derived_fun() {
    std::cout <"Derived::derived_fun()" <std::endl;
    std::cout <this->dummy <std::endl;
}
// 子类独有函数 且调用父类继承的函数
int Derived::derived_fun_fun() {
    std::cout <"Derived::derived_fun_fun()" <std::endl;
    fun();
}

好了,类的定义完了,我们来执行:

Base base;
base.fun();
Derived derived;
derived.fun();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值