ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

继承时父类构造调用规则

继承时父类构造调用规则 图片内容讲解:继承时父类构造调用规则原文核心要点当父类中有多个构造函数时,子类继承时,编译器会默认调用父类无参默认构造函数。 当父类没有无参默认构造函数,直接编译报错。 解决办法:子类构造的初始化列表手动调用父类的有参构造。 建议:类最好保留至少一个默认空构造;C++ 可以用= default;生成默认构造。1、底层 C++ 规则拆解子类对象构造时,先构造父类部分,再构造子类自己。如果子类构造函数初始化列表没有写父类构造,编译器自动帮你调用父类无参构造函数。⚠️关键:只要父类写了任意一个带参构造函数,编译器就不再自动生成父类默认无参构造。此时子类不手动调用父类有参构造,直接编译报错。案例 1:父类只有带参构造,子类不手动调用 → 报错cppclass Base{ public: //写了带参构造,编译器不会生成默认无参构造 Base() Base(int a){} }; class Derived : public Base{ public: Derived(){ //编译器隐式尝试 Base(); 但是父类没有无参构造,编译报错! } };案例 2:修正,子类初始化列表显式调用父类有参构造(图片里 Qt 常用写法)cpp
返回列表