首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

具有来自基类的指针的c++ access派生类

在C++中,派生类可以通过继承基类的指针来访问基类的成员。这种访问方式被称为"基类指针访问派生类"。

具体来说,当一个派生类继承了一个基类时,它会继承基类的所有公有和保护成员。通过使用基类指针,我们可以在派生类中访问这些继承的成员。

下面是一个示例代码:

代码语言:cpp
复制
#include <iostream>

class Base {
public:
    void display() {
        std::cout << "This is the base class." << std::endl;
    }
};

class Derived : public Base {
public:
    void show() {
        std::cout << "This is the derived class." << std::endl;
    }
};

int main() {
    Derived derivedObj;
    Base* basePtr = &derivedObj; // 使用基类指针指向派生类对象

    basePtr->display(); // 调用基类成员函数
    // basePtr->show(); // 错误!无法通过基类指针访问派生类特有的成员函数

    return 0;
}

在上面的示例中,我们定义了一个基类Base和一个派生类Derived。派生类Derived继承了基类Base的公有成员函数display()。在main()函数中,我们创建了一个派生类对象derivedObj,然后使用基类指针basePtr指向该对象。通过basePtr,我们可以调用基类的成员函数display()

需要注意的是,通过基类指针只能访问基类的成员函数和成员变量,无法访问派生类特有的成员函数和成员变量。如果想要访问派生类特有的成员,需要将基类指针转换为派生类指针。

关于C++中的继承和派生的更多详细信息,可以参考腾讯云的C++开发文档:C++开发指南

请注意,以上答案仅供参考,具体的实现方式可能因实际情况而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++派生类成员访问形式

C++派生类成员访问形式主要有以下两种: 1、内部访问:由派生类中新增成员对继承来成员访问。 2、对象访问:在派生类外部,通过派生类对象对从继承来成员访问。...今天给大家介绍在3中继承方式下,派生类成员访问规则。...private成员在私有派生类中是不可直接访问,所以无论是派生类成员还是通过派生类对象,都无法直接访问从继承来private成员,但是可以通过提供public成员函数间接访问。...private成员在私有派生类中是不可直接访问,所以无论是派生类成员还是派生类对象,都无法直接访问从继承来private成员,但是可以通过提供public成员函数直接访问它们。...private成员在私有派生类中是不可直接访问,所以无论是派生类成员还是通过派生类对象,都无法直接访问private成员。

2.2K70

C++:43---派生类转换、静态动态变量

二、转换本质 派生类可以转换为本质是: ①为什么派生类可以转换为派生类而来,因此派生类中包含了方法和成员。...此时可以通过指针或引用指向派生类(相当于将派生类中继承那部分方法和成员绑定到上了,相当于派生类被截断了),然后就可以将派生类假装是一个对象来使用(调用其中成员/方法) ②为什么不能转换为派生类...如果将一个对象绑定到派生类指针/引用上,此时派生类通过指针/引用访问自己新定义成员/方法时,发现找不到(因此不能将转换为派生类) 例如:下面B继承于A,子类继承于父,同时为父成员开辟了空间...演示案例② 我们修改演示案例①,上面是将指针指向于派生类。...,但是多态只有发生在指针/引用指向于派生类情况下才会发生,此处是普通对象,而不是引用/指针,因此访问还是A中show2()函数 ?

1.6K10

C++派生类成员访问属性

以下是摘自谭浩强《C++面向对象程序设计》一书中内容: 在派生类中,对继承方式可以有public(公用)、private (私有的)和protected(保护)3种。...不同继承方式决定了成员在派生类访问属性。...简单地说: (1)  公用继承(public inheritance) 公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为私有。...(2)  私有继承(private inheritance) 公用成员和保护成员在派生类中成了私有成员。其私有成员仍为私有。...(3)  受保护继承(protected inheritance) 公用成员和保护成员在派生类中成了保护成员,其私有成员仍为私有。

1K40

从零开始学C++之继承(二):继承与构造函数、派生类转换

从输出可以看出: 派生类对象构造次序: 先调用对象成员构造函数,接着是构造函数,然后是派生类对象成员构造函数,最后是派生类自身构造函数。...四、派生类转换 当派生类以public方式继承时,编译器可自动执行转换(向上转型 upcasting 安全转换) 派生类对象指针自动转化为对象指针 派生类对象引用自动转化为对象引用...派生类对象自动转换为对象(特有的成员消失) 当派生类以private/protected方式继承派生类对象指针(引用)转化为对象指针(引用)需用强制类型转化。...将派生类对象看成对象     //pm = &e1; // 对象指针无法转化为派生类对象指针。...; // 对象无法强制转化为派生类对象     return 0; } 五、派生类转换 对象指针(引用)可用强制类型转换为派生类对象指针(引用), 而对象无法执行这类转换.

1.5K00

C++C++ this 指针用法 ① ( C++ this 指针引入 | this 指针用法 | 代码示例 )

一、C++ this 指针 1、C++ this 指针引入 在 C++ 中 , this 指针 是一个特殊指针 , 由系统自动生成 , 不需要手动声明定义 , 在每个 非静态成员函数...中 , 都可以调用 this 指针 ; this 指针 是指向 调用对象 自身 指针 , 也就是调用 该成员函数 实例对象 内存地址 ; 由于 this 指针只能在 非静态成员函数内部使用..., 因此 this 指针内部使用指针 , 使用 this 可以访问 实例对象 中 所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++ ...this 指针用法 C++ this 指针用法 : 使用 this 作为指针 : 在 非静态成员函数 中 , 直接使用 this 作为 本实例对象 指针 ; this 使用 this-> 访问成员变量...访问成员变量 : 在 非静态成员函数 中 , 直接使用如下语法 , 访问 本实例对象 中 非静态成员变量 ; 先获取指针指向数据 然后访问数据中成员变量 ; (*this).成员变量名 在 C++

24020

聊下继承与多态区别?

派生类:基于创建,又称“子类”。派生类可以访问中所有的非私有成员。...//派生类创建格式: class derived-class : access-specifier base-class /* ①access-specifier表示继承类型。...private成员 不能继承 public成员,可以继承,在派生类中相当于是public访问 protected成员,可以继承,在派生类中相当于是protected访问 派生方式 public...多态实现三个条件: ①必须是公有继承 ②必须是通过指针或引用 指向派生类对象 访问派生类方法 ③方法必须是虚函数,且完成了虚函数重写 例如: //tips:虚函数指在成员函数前加*...2.继承关系中,并不要求方法一定是虚函数。而多态时,要求方法必须是虚函数。 3.多态:子类重写父方法,使得子类具有不同实现。且运行时,根据实际创建对象动态决定使用哪个方法。

4.9K20

C++ 、继承、重载《Rice C++ 学习开发》

工作一年后,发现读大学时候,做项目的代码感觉就像一坨shi一样。只要想到什么就写什么,完全没有代码复用概念。 C++基础知识说明,如果你学过C语言,那么基础知识是一样,比循环、运算符、指针等…。...因此成员如果不想被派生类成员函数访问,则应在中声明为 private。...当使用不同类型继承时,遵循以下几个规则: 公有继承(public):当一个派生自公有时,公有成员也是派生类公有成员,保护成员也是派生类保护成员,私有成员不能直接被派生类访问...保护继承(protected): 当一个派生自保护时,公有和保护成员将成为派生类保护成员。...私有继承(private):当一个派生自私有时,公有和保护成员将成为派生类私有成员。 其中:在c语言中,可以通过结构体来实现继承这个概念。

61810

C++多态与虚函数

C++ 多态实例 程序运行时动态即动态多态性,这里要研究问题是:当一个被继承为不同派生类时,各派生类可以使用与成员相同成员名,如果在运行时用同一个成员名调用对象成员,会调用哪个派生类成员...也就是说,通过指针只能访问派生类成员变量,但是不能访问派生类成员函数。  为了消除这种问题,让指针能够访问派生类成员函数,C++ 增加了虚函数(Virtual Function)。...C++ 多态总结 有了虚函数,指针指向对象时就使用成员(包括成员函数和成员变量),指向派生类对象时就使用派生类成员。...C++ 提供多态目的是:可以通过指针对所有派生类(包括直接派生和间接派生)成员变量和成员函数进行“全方位”访问,尤其是成员函数,从而实现一个接口,多种方法。...虚函数和纯虚函数都是为了多态性服务,使得指针或引用可以指向变化多端子类以实现变化多端版本。在派生类中重新定义中定义虚函数时,会告诉编译器不要静态链接到该函数。

26920

60秒问答:多态和函数重载关系?

隐藏:不用作用域, 通过派生类访问:派生类同名函数,隐藏函数 或者通过指针访问,函数隐藏派生类。 二、 问题:如何解隐藏问题?...编译时多态:函数重载和运算符重载(根据参数不同选择具体函数 ) 运行时多态:通过继承和虚函数实现(根据虚表指针 指向 派生类函数,还是函数) 四、 类型转换有几种情况,有什么区别?...,隐藏呢: 是指派生类函数屏蔽了与其同名函数, 注意只要同名函数,不管参数列表是否相同,函数都会被隐藏。...隐藏:不用作用域, 通过派生类访问:派生类同名函数,隐藏函数 或者通过指针访问,函数隐藏派生类。 二、 问题:如何解隐藏问题?...编译时多态:函数重载和运算符重载(根据参数不同选择具体函数 ) 运行时多态:通过继承和虚函数实现(根据虚表指针 指向 派生类函数,还是函数) 四、 类型转换有几种情况,有什么区别?

1.3K10

C++】从零开始认识继承

= 子类,会对子类进行切片,把父部分给进行赋值。 也可以使用引用和指针,同样也是通过切片来进行赋值。都可以对派生类进行修改。 引用 引用就是创建一个子类中部分别名。...指针 指针就是将子类中地址赋值给指针。 注意: 派生类对象 可以赋值给 对象 / 指针 / 引用。这里有个形象说法叫切片或者切割。...寓意把派生类中父那部分切来赋值过去。 对象不能赋值给派生类对象。 指针或者引用可以通过强制类型转换赋值给派生类指针或者引用。但是必须是指针是指向派生类对象时才是安全。...protected: //设置一个变量 int _num; }; int main() { Student s(1111); s.Print(); return 0; } 来看现象: 也就是变量和派生类变量具有不同作用域...派生类析构函数会在被调用完成后自动调用析构函数清理成员。因为这样才能保证派生类对象先清理派生类成员再清理成员顺序。 派生类对象初始化先调用构造再调派生类构造。

5510

封装、继承、多态、重载:C++强大特性与代码设计

继承 C++继承是面向对象编程一个重要概念,它允许一个派生类/子类)从另一个/父)继承属性和行为。...C++继承有以下几种类型: 公有继承(public inheritance):派生类继承了公有成员和保护成员,并且这些成员在派生类访问权限与一样。...旧被称为或者父,新被称为派生类或者子类。 多态 C++多态是面向对象编程一个重要概念,它允许使用指针或引用来处理不同类型对象,而实际上执行是根据对象类型动态选择相关操作。...dynamic_cast用于将指针或引用转换为派生类指针或引用,如果转换成功,返回指向派生类指针或引用;如果转换失败,则返回空指针或抛出bad_cast异常。...对于暂时无法实现函数,可以声明为纯虚函数,留给派生类去实现 注意: 抽象只能作为来使用 不能声明抽象对象,可以使用抽象指针和引用 构造函数不能是虚函数,析构函数可以是虚函数 可以试用指向抽象指针支持运行时多态性

17410

C++基础——C++面向对象之类、对象与继承基础总结(和对象概念、构造函数与析构函数、this指针、继承)

1.3 this指针         每个对象都拥有一个 this 指针, this 指针记录对象内存地址,在 C++中, this 指针是指向自身数据指针, 简单来说就是指向当前的当前实例对象...派生列表以一个或多个命名,形式如下: class derived-class: access-specifier base-class access-specifier:访问修饰符,与访问修饰限定符一样...):当一个派生继承公有时,公有成员也是派生类公有成员,保护成员也是派生类保护成员,私有成员不能直接被派生类访问,但是可以通过调用公有和保护成员来访问。...2)保护继承(protected): 当一个派生继承保护时,公有和保护成员将成为派生类保护成员。...3)私有继承(private):当一个派生继承私有时,公有和保护成员将成为派生类私有成员。 下面举个例子说明继承使用。

74150

必知必会之C++多态机制

具体来说,多态性允许指针或引用在运行时指向派生类对象,并且根据对象实际类型来调用相应成员函数。 多态性是通过虚函数来实现。...动态多态(运行时多态): 主要是通过虚函数和继承实现,例如,指针指向派生类对象,并调用虚函数。在运行时,根据对象实际类型来决定调用哪个版本函数。这种多态性在运行时才会确定。...unsetunset父指针指向子类对象unsetunset 在 C++ 中,可以使用父指针来指向子类对象,这是实现多态一种常见方式。...Derived derivedObj; // 使用指针指向派生类对象 Base* basePtr = &derivedObj; // 通过指针调用虚函数,实现多态...Derived derivedObj; // 使用指针指向派生类对象 Base* basePtr = &derivedObj; // 通过指针调用虚函数,实现多态

10110

【Example】C++与虚继承 (菱形继承问题)

当一个继承了两个来自同父子类后,会产生命名空间冲突及资源冗余。...因此,可以看出,实际上 Blu 当中存在两个 Gem 成员变量,分别来自 Byte 和 Expert,使用 this 指针进行调用,会发生命名空间冲突错误,同时造成了资源重复浪费。...同时,在虚继承机制当中,虚是由最终派生类进行初始化,本身达成了一种 “间接继承” 关系。 也就意味着最终派生类在构造函数初始化中,要在初始化表中调用虚构造函数进行初始化。...+ 继承权限参考表 public 公有成员 :派生类、友元、外部都可以访问 protected 保护成员: 派生类、友元可以访问 private 私有成员 :、友元可以访问 继承方式...【Example】C++ 回调函数及 std::function 与 std::bind 【Example】C++ 运算符重载 【Example】C++ 标准库智能指针 unique_ptr 与 shared_ptr

88630

c++】继承学习(二):探索 C++派生类默认机制与静态成员共享

,对内置类型不做处理,对自定义类型调用它默认构造函数,规则和以前一样 派生类里面,把父成员当做一个整体 派生类构造函数必须调用构造函数初始化那一部分成员。...因此,构造函数总是首先被调用,再是派生类中定义成员变量 派生类拷贝构造函数必须调用拷贝构造完成拷贝初始化,一般情况下默认生成就够用,如果涉及到深拷贝,就需要自己显示实现 Student..._num; } return *this; } 这里同名函数构成了隐藏 派生类析构函数会在被调用完成后自动调用析构函数清理成员。...这样设计可以防止成员被重复释放或者提前释放,从而导致潜在错误和资源泄漏 派生类对象初始化:先调用构造再调派生类构造 派生类对象析构清理:先调用派生类析构再调析构。...因此,第二次打印 _count 结果是 0 静态成员继承性质:静态成员在及其派生类之间是共享,而不是每个派生类都有独立静态成员副本。

9410

后台开发:核心技术与应用实践 -- C++

派生类构造函数必须对这3成员进行初始化,其执行顺序是这样: 先调用构造函数; 再调用子对象构造函数; 最后调用派生类构造函数体 当派生类有多个时,处于同一层次各个构造函数调用顺序取决于定义派生类时声明顺序...在派生时,派生类是不能继承析构函数,也需要通过派生类析构函数去调用析构函数。...在派生类中可以根据需要定义自己析构函数,用来对派生类中所增加成员进行清理工作;清理工作仍然由析构函数负责。...多态 在 C++ 程序设计中,多态性是指具有不同功能函数可以用同一个函数名,这样就可以用一个函数名调用不同内容函数。...而 虚函数 作用是允许在派生类中重新定义与类同名函数,并且可以通过指针或引用来访问派生类同名函数。

1.3K10

C++基础(七).多态(1)

C++ 虚函数&纯虚函数&抽象&接口&虚》 《C++抽象和纯虚函数》 ---- 概要 ---- 多态 在面向对象语言中,接口多种不同实现方式即为多态 多态特性中,可以将子类类型指针赋值给父类型指针...在派生类中定义函数应与虚函数具有相同形参个数和形参类型(覆盖),以实现统一接口,不同定义过程。...如果在派生类中没有对虚函数重新定义,则它继承其虚函数 虚函数可以让成员函数操作一般化,用指针指向不同派生类对象时,虚成员函数调用指针,则会调用其真正指向对象成员函数,而不是中定义成员函数...若不是虚函数,则不管指针指向哪个派生类对象,调用时都会调用中定义那个函数 Tip: 虚函数引入就是为了实现多态特性,让不同子类可以有不同实现方式 ---- 纯虚函数 纯虚函数是一种特殊虚函数...(梯形) 用虚函数分别计算几种图形面积,并求他们和 要求:用指针数组,使它每一个元素指向一个派生类对象 Shape *p[3]

46620
领券