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

派生类不能用来自另一个基类的私有成员重载基类中的私有成员

派生类不能直接访问基类中的私有成员,因为私有成员只能在基类内部访问。私有成员是基类的一部分,派生类无法直接继承或重载私有成员。

私有成员是为了封装基类的实现细节而设计的,它们对于派生类和外部代码都是不可见的。派生类只能通过基类公有成员函数来访问基类的私有成员。

如果派生类需要重载基类中的私有成员,可以通过基类的公有成员函数来间接实现。派生类可以定义一个公有成员函数,在该函数中调用基类的公有成员函数来访问基类的私有成员。这样派生类就可以间接地重载基类中的私有成员。

例如,假设有一个基类A,其中有一个私有成员函数privateFunc(),派生类B想要重载这个私有成员函数。可以在派生类B中定义一个公有成员函数publicFunc(),在该函数中调用基类A的公有成员函数来访问privateFunc()。

以下是一个示例代码:

代码语言:txt
复制
class A {
private:
    void privateFunc() {
        // 私有成员函数的实现
    }
public:
    void publicFunc() {
        privateFunc(); // 通过公有成员函数间接访问私有成员函数
    }
};

class B : public A {
public:
    void publicFunc() {
        // 重载基类中的私有成员函数
        // 实现派生类自己的逻辑
    }
};

在这个例子中,派生类B重载了基类A中的私有成员函数privateFunc()。派生类B定义了一个公有成员函数publicFunc(),在该函数中可以实现派生类自己的逻辑,并通过调用基类A的公有成员函数来访问privateFunc()。

需要注意的是,派生类重载基类中的私有成员函数并不是直接重载私有成员函数本身,而是通过公有成员函数间接实现的。这样可以保持基类的封装性,同时在派生类中实现自己的逻辑。

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

相关·内容

C++私有成员会被继承吗

1.派生类间接访问私有成员继承私有成员派生类是“不可见“,这种”不可见“是指在派生类成员函数,或者通过派生类对象(指针,引用)不能直接访问它们。...但是,不能直接访问并不代表不能访问。在派生类还是能够通过调用共有函数方式来间接地访问私有成员,包括私有成员变量和私有成员函数。考察如下程序。...,由于A成员变量i和成员函数privateFunc()都是私有的,所以在B成员函数无法直接访问到它们。...()就可以简介访问A私有成员。...综上所述,私有成员一定存在,也一定被继承到派生类,从大小也可以看出派生类包含了私有成员,读者可自行考证。只不过收到C++语法限制,在派生类访问私有成员只能通过间接方式进行。

2.3K20

C++私有成员会被继承吗

1.派生类间接访问私有成员继承私有成员派生类是“不可见“,这种”不可见“是指在派生类成员函数,或者通过派生类对象(指针,引用)不能直接访问它们。...但是,不能直接访问并不代表不能访问。在派生类还是能够通过调用共有函数方式来间接地访问私有成员,包括私有成员变量和私有成员函数。考察如下程序。...,由于A成员变量i和成员函数privateFunc()都是私有的,所以在B成员函数无法直接访问到它们。...()就可以简介访问A私有成员。...综上所述,私有成员一定存在,也一定被继承到派生类,从大小也可以看出派生类包含了私有成员,读者可自行考证。只不过收到C++语法限制,在派生类访问私有成员只能通过间接方式进行。

2.4K41
  • C++中派生类成员访问形式

    今天给大家介绍在3继承方式下,派生类成员访问规则。...private成员私有派生类是不可直接访问,所以无论是派生类成员还是通过派生类对象,都无法直接访问从继承来private成员,但是可以通过提供public成员函数间接访问。...private成员私有派生类是不可直接访问,所以无论是派生类成员还是派生类对象,都无法直接访问从继承来private成员,但是可以通过提供public成员函数直接访问它们。... 当继承方式为保护继承时,public成员和protected成员被继承到派生类中都作为派生类protected成员派生类其它成员可以直接访问它们,但是外部使用者不能通过派生类对象访问它们...private成员私有派生类是不可直接访问,所以无论是派生类成员还是通过派生类对象,都无法直接访问private成员

    2.4K70

    _成员函数可以访问本类对象私有成员

    成员函数可以访问本类对象私有成员 sList是一个 私有成员是head,有一个成员函数形参是本类对象(引用,引不引用不影响结论和原因) ==为什么呢!...head明明是b私有成员,为什么可以被访问了!!??== 因为!...对象b是sList,而这个intersection函数是sList成员函数 head虽然是sList对象私有成员,但是是在sList内访问 ==就是 在内访问了本类(实例化对象)私有成员...本来就是成员,只是抽象和实例化问题 这非常合理地体现了 封装性 这个就是不行,在外访问了 这一点是非常好用,可以利用这一点 ==成员函数肆无忌惮地访问对象私有成员!...==只要声明函数是成员函数,将外部同类对象设为形参(或加个引用)就可以了!! 不必再为如何访问到同类外部对象私有成员而苦思了!

    84730

    派生类虚函数和非虚函数继承效果

    “强制实现”,也就是只要是父指针调用普通函数,那就是父普通函数 而虚函数作用,主要是为了让父指针可以调用子类函数,这种是在运行时才决定调用哪个函数 1、虚函数:   C++虚函数主要作用是...子类可以重写父虚函数实现子类特殊化。 2、纯虚函数:   C++包含纯虚函数,被称为是“抽象”。抽象不能使用new出对象,只有实现了这个纯虚函数子类才能new出对象。   ...C++纯虚函数更像是“只提供申明,没有实现”,是对子类约束,是“接口继承”。   C++纯虚函数也是一种“运行时多态”。...3、普通函数:   普通函数是静态编译,没有运行时多态,只会根据指针或引用“字面值”对象,调用自己普通函数。   普通函数是父为子类提供“强制实现”。   ...因此,在继承关系,子类不应该重写父普通函数,因为函数调用至于对象字面值有关。 参考链接

    7910

    c++对象和关系_对象只能访问该类私有成员

    任何公有成员可以被外部访问。...所有成员,任何代码均可访问该项,访问权限最大也就意味着最不安全 Private访问修饰符:范围:私有的,只有内部可以进行访问,允许一个将其成员变量和成员函数对其他函数和对象进行隐藏。...只有同一个函数可以访问它私有成员。即使是实例也不能访问它私有成员。...访问权限最小意味着针对于对象自己而言最安全; Protected访问修饰符:范围:受保护以及子类可以进行访问,允许子类访问它成员变量和成员函数。这样有助于实现继承。...和内嵌成员,只有派生类可以访问该项; Internal访问修饰符:范围:内部,默认,程序集内部可以访问,允许一个将其成员变量和成员函数暴露给当前程序其他函数和对象。

    1.6K10

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

    protected(保护)访问修饰符与私有访问修饰符类似,但允许派生类(子类)访问保护成员。...继承 C++继承是面向对象编程一个重要概念,它允许一个派生类/子类)从另一个/父)继承属性和行为。...派生类对象可以直接访问公有成员私有继承(private inheritance):派生类继承了公有成员和保护成员,但是这些成员派生类访问权限变为私有。...派生类对象不能直接访问公有成员,只能通过派生类成员函数来间接访问。...派生类对象不能直接访问公有成员,只能通过派生类成员函数来间接访问。

    32610

    【C++深度探索】继承机制详解(一)

    在公有继承公有成员和保护成员都可以在派生类访问,私有成员不能派生类中直接访问。...在保护继承公有成员和保护成员派生类中都变为保护成员私有成员不能派生类中直接访问。...在私有继承公有成员和保护成员派生类中都变为私有成员私有成员不能派生类中直接访问。...这里不可见是指私有成员还是被继承到了派生类对象,但是语法上限制派生类对象不管在里面还是外面都不能去访问它。...protected,同理父private成员继承到子类也是选择private方式,在子类不可访问 对于私有成员也是被继承到子类,只是不可访问: ③private成员派生类不能被访问

    7510

    领悟面向对象就离开发应用不远了(提高)有你对面向对象所有疑问,爆肝1w字

    ,都可以访问另一个隐藏信息(包括私有成员和保护成员)。...当希望一个可以存取另一个私有成员时,可以将该类声明为另一友元。...ShowInf()成员函数访问Person私有成员name和age 三、继承 好了开始下一个重点继承,内容有点多,建议收藏 继承什么,像二代一样,儿子继承父亲,这里就像父亲,派生类好比于儿子...(继承了实现) 派生类还继承了接口 当然派生类和其他使用方法大致一样:可以有自己构造函数,可以添加额外数据成员成员函数 插个访问权限事情 首先派生类不能直接访问私有成员,...虚函数 虚函数源于c++继承,是多态一种。在c++,一个指针或者引用可以指向或者引用派生类对象。同时,派生类可以重写成员函数。

    52220

    C++继承

    因此成员如果不想被派生类成员函数访问,则应在声明为 private。...重载运算符。 友元函数。 继承类型 派生类可以有public、protected 或 private 几种类型。...当使用不同类型继承时,遵循以下几个规则: 公有继承(public):当一个派生自公有时,公有成员也是派生类公有成员保护成员也是派生类保护成员私有成员不能直接被派生类访问...保护继承(protected): 当一个派生自保护时,公有和保护成员将成为派生类保护成员。...私有继承(private):当一个派生自私有时,公有和保护成员将成为派生类私有成员。 多继承 多继承即一个子类可以有多个父,继承了多个父成员变量和函数。

    38320

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

    定义以关键字class开头,后跟名。 以下例子:定义了一个temp,包含两个成员变量和一个方法函数,main(),定义temp对象temp1,然后可以直接访问公有成员。...因此成员如果不想被派生类成员函数访问,则应在声明为 private。...当使用不同类型继承时,遵循以下几个规则: 公有继承(public):当一个派生自公有时,公有成员也是派生类公有成员保护成员也是派生类保护成员私有成员不能直接被派生类访问...保护继承(protected): 当一个派生自保护时,公有和保护成员将成为派生类保护成员。...私有继承(private):当一个派生自私有时,公有和保护成员将成为派生类私有成员。 其中:在c语言中,可以通过结构体来实现继承这个概念。

    63510

    c++–继承

    因此成员如果不想被派生类成员函数访问,则应在声明为 private。...重载运算符。 友元函数。 继承类型 当一个派生自,该可以被继承为 public、protected 或 private 几种类型。...当使用不同类型继承时,遵循以下几个规则: 公有继承(public):当一个派生自公有时,公有成员也是派生类公有成员保护成员也是派生类保护成员私有成员不能直接被派生类访问...私有继承(private):当一个派生自私有时,公有和保护成员将成为派生类私有成员。 多继承 多继承即一个子类可以有多个父,它继承了多个父特性。... 或 private 其中一个,用来修饰每个,各个之间逗号分隔,如上所示。

    34610

    从零开始学C++之继承(一):公有私有保护继承、overloadoverwriteoverride之间区别

    称为派生类或子类,原有称为或父 派生类具体化 (一)、派生类声明语法为: class 派生类名 : 继承方式  名 {            派生类新增成员声明;...(四)、接口继承与实现继承 我们将公有成员函数称为接口。 公有继承,公有成员函数在派生类仍然是公有的,换句话说是接口成为了派生类接口,因而将它称为接口继承。...实现继承,对于私有、保护继承,派生类不继承接口。派生类将不再支持公有接口,它希望能重用实现而已,因而将它称为实现继承。...(实际上是继承了但不可见),如果在派生类成员函数想要调用被隐藏函数,可以使用 “ 名::函数名(参数)”语法形式,如果被隐藏函数是public,则在体外也可以使用“ 派生类对象.名...二、C++设计一个不能继承 在Java定义了关键字final,被final修饰不能被继承。但在C++没有final这个关键字,要实现这个要求还是需要花费一些精力。

    93900

    【C++】继承

    实际运用,公有继承最为常见,私有继承和保护继承并不常见,因为你继承目的就是想让子类能够访问到某些成员,并且保护继承下来成员只能在派生类中进行使用,派生类外都无法访问到公有成员函数,所以实际扩展维护性不强...派生类对象可以直接赋值给对象/指针/引用,对象可直接得到派生类对象成员那一部分,而指针或引用是直接指向或者引用到派生类对象成员那一部分。 2....复制重载和拷贝构造有一点不一样,由于复制重载函数名在和子类函数名相同,所以在调用复制重载时必须指定域,否则会导致死循环调用子类复制重载,最终导致堆栈溢出。...所以友元不能访问子类私有和保护成员。...M mm;//mm保护成员,N对象不能访问,因为不能访问私有或保护成员

    69410

    C++基础-继承

    继承是一种复用,不同抽象层次对象可以复用相同特性。继承通常用于说明一个(派生类)是另一个()特例。...例如,公有成员遇到私有继承时,就变成派生类私有成员保护成员遇到公有继承时,就变成派生类保护成员私有成员派生类不可见。...公有成员派生类也是公有成员保护成员派生类也是保护成员私有成员派生类不可见。 公有继承用于"是一种"(is-a)关系。...is-a 表示派生类一种,比如金枪鱼(派生类)是鱼()一种。 2.3 私有继承 私有继承特点是公有成员和保护成员都变成派生类私有成员。...私有成员仍然为私有派生类不可见。 与私有继承类似,保护继承也表示 has-a 关系。不同时,公有和保护成员变为派生类保护成员,能够被派生类派生类子类访问。

    97320

    C++ 知识点总结篇

    ,但不能有返回类型; 构造函数作用:为对象分配空间、为数据成员赋初值、请求其他资源; 构造函数工作:初始化虚函数表、建立对象、建立非静态数据成员对象、安置虚对象信息、执行构造函数体代码; 若一个没有定义构造函数...、做公共及用户要求善后工作; 析构函数无参数和返回值,一个只能定义一个析构函数,故不能重载,格式为: ~(); 内存布局 全局数据区:存放全局变量、静态数据、常量; 代码区:存放成员函数...:父公有成员和保护成员作为子类私有成员,且不能被子类派生类访问; 公有继承 public:父公有成员和保护成员作为子类成员时,仍保持原有状态,父私有成员仍为私有; 保护继承 protected...:父公有成员和保护成员成为子类保护成员,且只能被他派生类成员函数或友元访问,父私有成员仍为私有派生类构造函数调用顺序: 调用构造函数,调用顺序按继承时说明顺序; 调用子对象构造函数...,不能是友元,但可以是另一个友元,不能为全局函数,也不能为静态函数,析构函数可以为虚函数,但构造函数不能为虚函数; 变量初始化 局部变量:定义时,系统不会进行初始化; 全局变量:定义时,系统自动初始化

    50030

    继承

    结论: 私有成员,无论是哪一种形式继承,继承之后在派生类不能访问。 任意一种访问限定符限定成员,当为私有继承时候,在派生类外面都不能进行访问。..._a = 0; return 0; } 继承作用域 不管是还是派生类它都有独立作用域,都在该类域里面。 当成员派生类成员名相同时候,此时成员隐藏。...派生类自己成员还是和拷贝构造,赋值运算符重载一样。...继承与友元 友元是不能继承——友元不能访问派生类私有和保护成员。...继承与组合 继承是is-a关系——派生类 组合是has-a关系——A中有B 在既可以继承,也可以组合地方,选择组合,因为继承情况下,成员是完成暴露给派生类,而组合只会提供相应方法

    24740

    C++重要知识点小结---2

    该声明是为派生类而保留位置。 一个抽象不能有实例对象,即不能由该类抽象来制造一个对象。 纯虚函数是在为子类保留一个位置,以便子类自己实在函数定义来重载之。...2.派生类可以继承所有公有和保护数据成员成员函数。 保护访问权限对于派生类来说是公有的,而对于其它对象来说是私有的。即使是派生类不能访问私有的数据成员成员函数。...在派生类中允许重载成员函数。如果函数是虚函数,当使用指针或引用访问对象时,将基于实际运行时指针所指向对象类型来调用派生类函数。...访问控制权限: 私有继承时,不管是公有的,还是保护或者为私有的,一律在子类变成私有成员。 保护继承时,公共和保护成员在子类变成保护,而私有成员在子类变成私有的。...一个私有的或保护派生类不是子类,因为非公共派生类不能能做所有的事。 保护继承与私有继承类似,继承之后相对于来说是独立;保护继承对象,在公开场合同样不能使用成员

    70570

    C++ 重载运算符 继承 多态 (超详细)

    (3) 友元函数重载+重载输入输出流(稀烂多比较重要) 在左右操作数类型不同时上述重载方式都不能正常使用,这时候就需要两个操作数,在重载,因不能直接调用,所以要把该函数声明为友元。...(4)派生类静态数据成员 定义静态成员,将被所有派生类共享 2、初始化: (5)派生类初始化 派生类构造函数声明格式为: 派生类构造函数(变元表):(变元表)、对象成员1(...这个规则可以简述为能放地方,放派生类一定可以使用,在程序需要使用对象地方都可以公有派生类对象代替。...声明为指向对象指针,当其指向公有派生类对象时,只能用它来直接访问派生类继承来成员,而不能直接访问公有派生类定义成员。...可以理解为派生类完全包含,指向任何成员,都可以在公有派生类中找到对应成员对象与之对应,如果是私有继承,能找到但是不能访问。但是派生类中有的对象,不一定会有,所以不能这么操作。

    1.1K21
    领券