基类和派生类 小知识点

Posted zhiminzeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基类和派生类 小知识点相关的知识,希望对你有一定的参考价值。

1、子类调用父类的同名函数(非虚函数)

class Base
{
public:
    void func();
    void func(int i);
};

class Element : public Base
{
public:
    void func(int i);  // 当子类有父类的同名函数
};

int main()
{
    Element ele;
    ele.func(12);  // 只会调用子类
    ele.func();    // 编译器报错
}
// 如果要让 ele.func(); 能够调用父类的函数,子类需要
class Element : public Base
{
public:
    void func(int i);
public:
    using Base::func;  // 通过using 让父类的同名函数,在子类可见,暴露函数名,但无法指定形参类型,public或protect
    // 会将所有的同名函数暴露,不能只暴露一部分

};

int main()
{
    Element ele;
    ele.func(12);  // 还是只会调用子类
    ele.func();    // 这样的话会调用父类的func() 函数
}
//或者直接在子类中直接调用基类同名函数
class Element : public Base
{
public:
    void func(int i){
          Base::fun(i);
          Base::fun();   // 直接调用父类同名函数    
     }
};

2、派生类初始化赋值基类

只有派生类的基类部分会被拷贝或复制,派生类部分将被忽略掉

class Humen; // 基类
class Men : public Humen;

int main()
{
    Men men;
    Humen humen1(men);   // 只会调用基类的拷贝构造函数,将派生类的基类部分拷贝到基类
    Humen humen2;
    humen2 = men;    // 同样只会调用基类的赋值运算符,将派生类的基类部分赋值给基类
    return 0;
}

 

以上是关于基类和派生类 小知识点的主要内容,如果未能解决你的问题,请参考以下文章

基类和派生类

代码回顾

基类和派生类 C++

在基类和派生类中使用基类的装饰器

C#编程,关于基类和派生类

基类和派生类