首页 > 其他分享 >通过基类指针访问派生类

通过基类指针访问派生类

时间:2023-03-05 17:57:11浏览次数:37  
标签:派生类 Derived 访问 Base 基类 指针

可以使用多态性来通过基类指针访问子类。当一个基类的指针指向一个派生类的对象时,可以使用以下方式访问子类。

使用虚函数

将函数声明为虚函数,并在派生类中重写该函数,然后通过基类指针调用该函数,将会调用到派生类的实现,从而访问派生类。

class Base {
public:
    virtual void print() {
        cout << "这是基类" << endl;
    }
};

class Derived : public Base {
public:
    void print() {
        cout << "这是派生类" << endl;
    }
};

int main() {
    Base* p = new Derived();
    p->print(); // 输出:“这是派生类”
    return 0;
}

使用动态类型转换

通过将基类指针转换成派生类指针,然后访问派生类的成员。

class Base {
    // ...
};

class Derived : public Base {
public:
    int value;
};

int main() {
    Base* p = new Derived();
    Derived* q = dynamic_cast<Derived*>(p);
    q->value = 1;
    return 0;
}

在使用动态类型转换之前,需要使用 dynamic_cast 进行类型检查,以确保指针可以安全地进行转换。

标签:派生类,Derived,访问,Base,基类,指针
From: https://www.cnblogs.com/chilkings/p/17181091.html

相关文章

  • golang的指针变量,智商声明没有赋值,不能直接 *p=123之类的
    packagemainimport"fmt"funcmain(){ //申明指针的时候,如果没有指向某个变量,默认值为nil //不能直接进行操作,包括读写 //而用new返回的是有默认值的指针,为数据......
  • 相同的树(树)、买卖股票的最佳时机 II(贪心、数组)、下一个排列(数组、双指针)
    相同的树(树)给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入:p=[......
  • 迷失的this指针
    在调试客户崩溃dmp文件时,已经恢复了异常栈,需要查看当前的对象,但是this指针如下 很明显,这个值不对,ecx指针的值被修改做它用了。没关系,可以查看函数汇编,看看this指针保存......
  • C/C++ 数据结构优先级队列的实现(使用二级指针)
    #include<iostream>#include<Windows.h>#include<iomanip>//优先级队列的实现usingnamespacestd;#defineMaxSize5typedefintDataType;//队列中的元素类型......
  • 填充每个节点的下一个右侧节点的指针
    填充每个节点的下一个右侧节点的指针给定一个二叉树:structNode{intval;Node*left;Node*right;Node*next;}填充它的每个next指针,让这个指针指向其下一个右......
  • 指针和数组笔试题解析
    在大多数情况下,数组名就是数组首元素的地址,但是有两种特殊情况:一、sizeof(数组名):当数组名单独放在sizeof内部,指的是整个数组二、&数组名:取的是整个数组的地址,但是结果和首......
  • C++智能指针详解(共享指针,唯一指针,自动指针)
    前言:智能指针在C++11中引入,分为三类:shared_ptr:共享指针unique_ptr:唯一指针auto_ptr:自动指针一、共享指针几个共享指针可以指向同一个对象;每当shared_ptr的最后一个所有者......
  • 3.3 C提高 指针 字符串
    扩展1.指针变量和它指向的内存块是两个不同的概念指针(本身也有东西)~内容点击查看代码注意//写内存时,一定要确保内存可写 char*buf2="sadgkdsjlgjlsdk";//文......
  • 指针与数组、多级指针
    指针和数组:数组名: 【数组名是地址常量】---不可以被赋值。 ++/--/+=/-=/%=//=(带有副作用的运算符) 指针是变量。可以用数组名给指针赋值。++--......
  • 使用qsort函数实现冒泡排序(函数指针的运用)
    //此程序的本质:完全理解qsort函数的传参的原则////实现思路:因为我们是模拟qsort函数//所以我们要自己创造一个:比较数据的函数:cmp_int//因此必须有一个函数指针来接收这......