码迷,mamicode.com
首页 > 其他好文 > 详细

基类和派生类 小知识点

时间:2020-06-07 23:04:11      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:UNC   无法   拷贝构造函数   span   不能   fun   编译器   派生   初始化   

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;
}

 

基类和派生类 小知识点

标签:UNC   无法   拷贝构造函数   span   不能   fun   编译器   派生   初始化   

原文地址:https://www.cnblogs.com/zhiminzeng/p/13062760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!