C++中的派生类,可以不定义对象直接调用基类的成员和调用自己的成员函数嘛???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中的派生类,可以不定义对象直接调用基类的成员和调用自己的成员函数嘛???相关的知识,希望对你有一定的参考价值。

RTRT。。。。

如果你想调用的函数是基类的静态成员函数,不定义派生类对象是可以调用的,格式:base::fun();因为静态成员并不是类的某个对象的成员,而是所有该类的对象所共享的。通过类名就可以直接访问。如果你想调用的不是静态函数,不定义派生类对象是不可能的。因为你调用的成员函数可能会访问到类的数据成员,而你没有定义一个对象,也就没有调用类的构造函数,也就没有对数据成员进行初始化。所以说必须通过类的对象来访问其非静态成员函数。 参考技术A 不可以吧,本人没试过。因为你没有定义对象的话,就无法获得函数入口。。。static函数或许可以,自己试一下就行~~不定义对象,就相当于没定义实体,却要求长宽高,道理一样。。。 参考技术B 假设基类是 CBASE

那调用基类成员函数FOO()就是 CBASE::FOO();

调用当前类的成员函数方法是 this->FOO();
参考技术C 在类里面定义的时候可以调用自己的成员函数
和父类的public和protected的函数

在其派生类C++的构造函数中调用基类的构造函数[重复]

【中文标题】在其派生类C++的构造函数中调用基类的构造函数[重复]【英文标题】:Calling the constructor of a base class inside the constructor of its derived class C++ [duplicate] 【发布时间】:2017-12-12 04:19:44 【问题描述】:

我正在尝试编写一个将不同类型的蛋糕插入发票的程序,它使用了几个派生类。我想使用派生类的构造函数来初始化抽象父类中的一些数据成员。有没有办法可以做到这一点,以便我可以保持数据成员私有,并在派生类中调用基类构造函数来初始化它们?例如:

class Cake: 
public:
    Cake(string flavor, string frosting) 
        cakeType = flavor;
        frostingType = frosting;
    
private:
    string cakeType;
    string frostingType;
;

class LayerCake: public Cake 
public: 
    LayerCake(string flavor, string frosting, int layers, int 
    quantity) 
        numLayers = layers;
        cakeQuantity = quantity;
        Cake(flavor, frosting);
private:
    int numLayers;
    int cakeQuantity;
;

【问题讨论】:

【参考方案1】:

在构造函数体内,Cake(flavor, frosting);只是构造了一个临时的Cake,与派生类的基类子对象无关。

你想要的是member initializer list,例如

class LayerCake: public Cake 
public: 
    LayerCake(string flavor, string frosting, int layers, int 
    quantity) : Cake(flavor, frosting) 
//            ~~~~~~~~~~~~~~~~~~~~~~~~
        numLayers = layers;
        cakeQuantity = quantity;
    
    ...
;

【讨论】:

如果我使用的是头文件,我是在声明和实现中都使用这种语法,还是只在实现中使用? @Jake 只是实现。

以上是关于C++中的派生类,可以不定义对象直接调用基类的成员和调用自己的成员函数嘛???的主要内容,如果未能解决你的问题,请参考以下文章

c++继承总结

C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承

C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承

C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承

C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承

C++入门派生类和基类的构造/析构函数关系