标签: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