首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

调用的是C++父类默认构造函数,而不是参数化构造函数

调用的是C++父类默认构造函数,而不是参数化构造函数。

在C++中,当创建一个派生类对象时,会先调用基类的构造函数,然后再调用派生类自己的构造函数。如果派生类没有显式地调用基类的构造函数,那么会默认调用基类的默认构造函数。

默认构造函数是一个没有参数的构造函数,它会初始化对象的成员变量为默认值。参数化构造函数则是一个带有参数的构造函数,可以根据传入的参数来初始化对象的成员变量。

调用父类的默认构造函数的优势在于可以确保父类的成员变量被正确地初始化。如果派生类没有显式地调用基类的构造函数,编译器会自动调用基类的默认构造函数。

然而,如果派生类需要传递参数给基类的构造函数进行初始化,就需要显式地调用基类的参数化构造函数。这可以通过在派生类的构造函数初始化列表中使用基类的构造函数来实现。

调用父类的默认构造函数而不是参数化构造函数的应用场景包括:

  1. 当派生类的构造函数不需要传递参数给基类的构造函数进行初始化时。
  2. 当派生类的构造函数需要传递参数给基类的构造函数进行初始化,但这些参数的值可以通过默认构造函数来获得。

以下是腾讯云相关产品和产品介绍链接地址:

  • 腾讯云CVM(云服务器):https://cloud.tencent.com/product/cvm
  • 腾讯云CDB(云数据库):https://cloud.tencent.com/product/cdb
  • 腾讯云COS(对象存储):https://cloud.tencent.com/product/cos
  • 腾讯云VPC(私有网络):https://cloud.tencent.com/product/vpc
  • 腾讯云SCF(云函数):https://cloud.tencent.com/product/scf
  • 腾讯云CDN(内容分发网络):https://cloud.tencent.com/product/cdn
  • 腾讯云TKE(容器服务):https://cloud.tencent.com/product/tke
  • 腾讯云CFS(文件存储):https://cloud.tencent.com/product/cfs
  • 腾讯云CKafka(消息队列 CKafka):https://cloud.tencent.com/product/ckafka

请注意,以上链接仅供参考,具体的产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++构造函数调用规则 ( 默认构造函数 | 默认无参构造函数 | 默认拷贝构造函数 | 构造函数调用规则说明 )

一、默认构造函数 C++ 中 2 种特殊构造函数 , 分别是 : 默认无参构造函数 : 如果 C++ 中 没有定义构造函数 , C++ 编译器会自动为该类提供一个 " 默认无参构造函数 " ,...没有为 C++ 定义 构造函数 , C++ 编译器 将自动为该类 生成一个默认无参构造函数 ; 定义了构造函数 : 如果为 C++ 定义了其他类型构造函数 ( 有参构造函数 / 无参构造函数...; 创建一个对象 并将其 赋值给 另一个对象时 , 会自动调用 默认拷贝构造函数 ; 如果 C++ 中 没有定义拷贝构造函数 , C++ 编译器会自动为该类提供一个 " 默认拷贝构造函数 " ,...: 如果为 C++ 定义了 拷贝构造函数 , C++ 编译器 将不再自动生成默认拷贝构造函数 ; 默认拷贝构造函数内容 : C++ 编译器 为 定义 默认拷贝构造函数 , 在函数内部将 现有对象...和 默认拷贝构造函数 : 如果 C++ 中 没有定义 构造函数 时 , C++ 编译器 会提供 默认 无参构造函数默认 拷贝构造函数 ; 提供 默认拷贝构造函数 : 如果 C++ 中 ,

1K30

小朋友学C++(10):子类构造函数调用构造函数

从哲学层面来看,子类会继承除private以外所有成员。 因为构造函数公有的,所以理所当然地会被子类继承。...分析: 这里构造函数写法 Rectangle() : Shape() { 子类构造函数本身语句; } 这是先调用构造函数,再执行它本身语句。从运行结果也可以看出这一点。...那么,如果不显示调用构造函数Shape()呢?构造函数就不被调用了吗? 咱们可以用下面的程序来验证。...分析: 从运行结果可以看出,程序1和程序2运行结果完全一致。也就是说,Shape()即使不显示调用,实际上也会被调用。并且调用顺序优先于子类本身构造函数

1.4K60
  • C++构造函数意义 ( 构造函数显式调用与隐式调用 | 构造函数替代方案 - 初始函数 | 初始函数缺陷 | 默认构造函数 )

    实例对象时 , C++ 编译器 会自动调用 开发者定义 构造函数 ; 2、构造函数显式调用与隐式调用 构造函数 可以 自动调用 , 也可以手动调用 ; 一般 默认 无参构造函数 自动地...隐式调用 ; 有参构造函数 由开发者 手动显式调用 ; 3、构造函数替代方案 - 初始函数 构造函数替代方案 - 初始函数 : 共有初始函数 : 为每个定义一个 public 共有初始函数..., 造成未知风险 ; 无法调用 : 在某些特殊场合 , 初始函数无法被调用 , 如 : 只定义变量类型 , 没有调用构造函数 , 此时会自动调用无参构造函数初始实例对象 , 如果使用初始函数..., 则无法进行初始操作 ; 5、默认构造函数 如果 定义 时 , 没有写 构造函数 , C++ 编译器 会 为 提供一个默认构造函数 ; 默认构造函数 函数体为空 , 不需要开发者定义 ,...; 默认拷贝构造函数 : 如果 中没有定义 拷贝构造函数 , C++ 编译器 会默认定义一个 默认拷贝构造函数 , 该函数作用是进行简单成员变量赋值 ; 6、代码示例 - 初始函数无法及时调用

    73420

    python 子类调用构造函数实例

    当子类继承后,需要调用方法和属性时,需要调用初始函数。...,但新构造函数没有初始,当没有初始构造函数时,就会报错。...super函数返回一个super对象,解析过程自动查找所有的,当前和对象可以作为super函数参数使用,调用函数返回方法方法。...使用super函数如果子类继承多个只许一次继承,使用一次super函数即可。 如果没有重写子类构造函数可以直接使用属性和方法。...以上这篇python 子类调用构造函数实例就是小编分享给大家全部内容了,希望能给大家一个参考。

    3.5K30

    【Kotlin】初始 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )

    文章目录 一、主构造函数定义临时变量 二、主构造函数中定义成员属性 三、次构造函数 四、构造函数默认参数 一、主构造函数定义临时变量 ---- 在 Kotlin 中 , 可以在 声明 时 在 名后...---- Kotlin 只允许 在定义时 定义 一个主构造函数 , 在其中可以定义 临时变量 , 也可以定义 属性变量 ; 次构造函数 定义在 Kotlin 内部 , 可以定义 多个 次构造函数..., 每个次构造函数都可以有不同参数组合 ; 定义次构造函数后 , 必须调用构造函数 , 并且为每个主构造函数 参数设置 参数值 ; 次构造函数中可以实现代码逻辑 , 作为主构造函数补充 ; 代码示例...: 下面代码中 , 次构造函数 必须 调用构造函数 , 如 name 和 age 参数必须设置默认值 name = "Jerry", age = 12 ; class Hello( // 主构造函数...---- 在定义 构造函数 时 , 可以为 构造函数 参数 指定 默认值 , 如果 用户传入了 值参 则 使用用户传入值 , 如果用户没有传入值 则 使用该 默认值 ; 如果 构造函数 参数有 指定默认

    4.8K20

    C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造

    C++ 构造函数构造函数 C++ 中一种特殊成员函数,当创建对象时自动调用。它用于初始对象状态,例如为属性分配初始值。构造函数与类同名,且没有返回值类型。...构造函数类型C++ 支持多种类型构造函数,用于满足不同初始需求:默认构造函数: 不带参数构造函数,通常用于初始对象默认状态。带参数构造函数: 允许传入参数来初始对象状态。...拷贝构造函数: 用于从另一个已存在对象创建新对象。移动构造函数: 用于从即将销毁临时对象转移资源到新对象。默认构造函数默认构造函数最简单构造函数,不接受任何参数。...public:构造函数可以在外部任何地方调用。private:构造函数只能在内部调用。protected:构造函数可以在内部或其子类中调用。...总结构造函数 C++ 中重要面向对象编程机制,用于初始和管理对象状态。通过理解不同类型构造函数及其用法,您可以创建健壮且可维护 C++ 代码。

    1.7K10

    C++参数构造函数 | 有参构造函数

    C++参数构造函数C++中,程序员希望对不同对象赋予不同初值,可以采用带参数构造函数,在调用不同对象构造函数时,从外面将不同数据传递给构造函数, 以实现不同初始。...C++构造函数首部一般形式为  构造函数名(类型1 形参1,类型2 形参2,… ) 程序员不能调用构造函数,因此无法采用常规调用函数方法给出实参,实参在定义对象时给出。...C++定义对象一般形式为  名 对象名(实参1,实参2,…); C++数据成员不能在声明时初始,如果一个中所有的成员都是公用,则可以在定义对象时对数据成员进行初始。...如果数据成员私有的, 或者中有private或protected成员,则不能用这种方法初始。 案例:C++求体积,要求在中用带参数构造函数。...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去动力,跪谢各位父老乡亲啦~ C++参数构造函数 | 有参构造函数 更多案例可以go公众号:C语言入门到精通

    3.9K64

    C++构造函数作用_c++什么构造函数

    因为一个函数局部变量在内存中地址,在每次函数调用时都可能不同,因此自动初始工作就不是一次性,而是每次函数调用时都耍做,这会带来无谓时间开销。...如果没有提供参数信息,编译器就认为应该调用无参构造函数。 下面一个有多个构造函数 Complex 例子程序。...对示例1中代码,如果写作Student stu或者new Student就是错误,因为中包含了构造函数创建对象时却没有调用。...实际上编译器只有在必要时候才会生成默认构造函数,而且它函数体一般不为空。默认构造函数目的帮助编译器做初始化工作,不是帮助程序员。...这是C++内部实现机制,这里不再深究,初学者可以按照上面说“一定有一个空函数默认构造函数”来理解。 最后需要注意一点调用没有参数构造函数也可以省略括号。

    1.4K20

    C++构造函数初始列表 ④ ( 构造函数 和 析构函数 调用顺序分析 )

    构造函数初始列表 总结 : 初始列表 可以 为 成员变量 提供初始值 ; 初始列表 可以 调用 成员变量 类型 构造函数 进行成员变量初始操作 ; 初始列表 可以 使用 构造函数...中传入 参数 ; 初始化时 , 根据定义顺序 , 先调用 成员变量 构造函数 , 然后调用外部类构造函数 , 析构函数正好相反 ; 实例对象 const 成员变量 必须只能在 初始列表 中进行...拷贝构造函数也可以定义初始列表 如果一个 没有定义 无参构造函数 , 只有一个 有参构造函数 , 此时 , C++ 编译器 不会为其 生成 默认无参构造函数 ; 这种场景下 涉及到了 构造函数...m_height; // 身高 }; 定义了 B 与 上述 A 基本一致 , 也是无法使用 默认无参构造函数 , 必须调用有参构造函数 ; 定义 C , 其中维护了 A 和 B 两个子对象..., 可以不在初始列表中进行初始 // 由于 A 和 B 都没有默认构造函数 , 必须在初始列表中调用 有参构造函数 // m_const_int 成员常量 , 只能初始一次 , 不能赋值

    31620

    C++构造函数初始列表 ⑤ ( 匿名对象 生命周期 | 构造函数 中 不能调用 构造函数 )

    构造函数初始列表 总结 : 初始列表 可以 为 成员变量 提供初始值 ; 初始列表 可以 调用 成员变量 类型 构造函数 进行成员变量初始操作 ; 初始列表 可以 使用 构造函数...中传入 参数 ; 初始化时 , 根据定义顺序 , 先调用 成员变量 构造函数 , 然后调用外部类构造函数 , 析构函数正好相反 ; 实例对象 const 成员变量 必须只能在 初始列表 中进行...初始 , 所有的构造函数都要进行初始操作 ; 构造函数 中 不能调用 构造函数 ; 一、匿名对象 生命周期 1、匿名对象 生命周期 说明 调用 名(构造函数参数) 创建 匿名对象 ; 匿名对象...二、构造函数调用 构造函数 ---- 1、构造函数 中 不能调用 构造函数 构造函数调用 构造函数 危险行为 ; 构造函数调用 构造函数 , 并不会为本对象进行初始操作 ; 构造函数 调用方式...执行 Student 构造函数" << endl; } 然后 , 在无参 构造函数中 , 调用 有参构造函数 ; // 构造函数调用 构造函数 危险行为 Student() { /

    20920

    C++ 合成默认构造函数真相

    对于C++默认构造函数,我曾经有两点误解: 如果没有定义任何构造函数,那么编译器(一定会!)将为定义一个合成默认构造函数。 合成默认构造函数会初始中所有的数据成员。   ...让我对上面两个观点产生疑惑,在看《Effective C++》时,条款05《了解C++默认编写并调用哪些函数》中说到“….惟有当这些函数被需要(被调用),它们才会被编译器创建出来。”...a时候没有提供参数且A没有定义默认构造函数,编译器肯定是合成了一个默认构造函数调用它来初始A数据成员,实则不是。...正如上面所说,初始内置类型或复合类型成员程序责任不是编译器责任。...4.带有虚基 虚基概念存在于之间一种相对概念。例如A虚继承于X,则对于A来说,XA虚基不能说X就是一个虚基

    80730

    C++构造函数初始列表 ② ( 构造函数 为 初始列表 传递参数 | 嵌套情况下 构造函数 析构函数 执行顺序 )

    一、构造函数 为 初始列表 传递参数 1、构造函数参数传递 构造函数 初始列表 还可以使用 构造函数参数 ; 借助 构造函数参数列表 , 可以为 初始列表 传递参数 ; 在下面的代码中...; m_a(ageOfA, heightOfA) 表示调用 A 有参构造函数 , 传入 2 个参数分别是 构造函数 int ageOfA, int heightOfA 两个参数 ; 代码示例 :.../ 析构函数 执行顺序 ---- 1、构造函数 / 析构函数 执行顺序 B 中 定义了 A 类型 成员变量 ; A 类型对象 被组合对象 ; 构造函数执行顺序 : 在 初始 B 类型 实例对象时..., 先执行 被组合对象 A 构造函数 , 如果 被组合对象 有多个 , 则 按照 成员变量 定义顺序 进行初始 ; 注意 : 此处 不是按照 初始列表 顺序 进行初始 ; 析构函数执行顺序...: 析构函数构造函数 执行顺序 相反 ; 2、代码示例 - 构造函数执行顺序 下面的代码中 , 在 B 中定义 A 类型 成员变量 ; 执行构造函数时 , 先调用 A 构造函数 , 再调用

    24630

    C++和对象(中):默认成员函数构造函数、析构函数、拷贝构造函数、运算符重载

    2.构造函数 构造函数特殊成员函数构造函数虽然名称叫构造,但是它主要任务并不是开空间创建对象(我们常使用局部对象是栈帧创建时空间就开好了),而是对象实例化时初始对象。...如果一个构造函数第一个参数自身类型引用,且任何额外参数都有默认值,则此构造函数就叫做拷贝构造函数,也就是说拷贝构造函数一个特殊构造函数。...这里解释一下为什么拷贝构造第一个参数传参方式必须引用。 首先我们要知道,C++规定传值传参要调用拷贝构造,没有为什么,就是规定。比如说下面这个f1函数。..._day; } 这里拷贝构造函数也是传值传参,拷贝构造函数还要调用拷贝构造函数。 因为传值传参,又要调用拷贝构造函数。 如果个拷贝构造函数参数传参方式不是引用,会发生无穷递归。...自动生成拷贝构造函数对自定义类型和内置类型不同。 和前面说构造函数有一点区别就是,拷贝构造对内置类型也会拷贝,前面说过构造函数对内置类型是否初始不确定,这里注意一下。

    8910

    Java中子类和构造函数

    构造对象时,构造函数(super())首先被调用。...让构造器被调用原因,如果有私有的属性需要在它构造函数中初始。 ...这是上边Super发生情况。  子类构造函数,无论有参构造还是无参构造,将会调用默认无参构造函数。...3)子类中显式调用构造函数  下面的代码正常:    子类(Sub)构造函数显式地调用(Super)中带参构造参数。如果中定义了相对应构造函数,那将会被正常良好调用。  ...4)规则 简而言之,规则是:子类构造函数必须调用构造函数,无论隐式调用还是显式调用,无论哪种方式,被调用构造函数必须得先被定义。

    2.2K20

    C++ 构造函数初始列表

    上面的构造函数(使用初始列表构造函数)显式初始成员;没使用初始列表构造函数成员赋值,并没有进行显式初始。...初始和赋值对内置类型成员没有什么大区别,像上面的任一个构造函数都可以。对非内置类型成员变量,为了避免两次构造,推荐使用构造函数初始列表。但有的时候必须用带有初始列表构造函数: ?...1.成员类型没有默认构造函数。若没有提供显示初始式,则编译器隐式使用成员类型默认构造函数,若没有默认构造函数,则编译器尝试使用默认构造函数将会失败。 2.const 成员或引用类型成员。...因为类型数据成员对象在进入函数体前已经构造完成,也就是说在成员初始列表处进行构造对象工作,调用构造函数,在进入函数体之后,进行对已经构造对象赋值,又调用个拷贝赋值操作符才能完成(如果并未提供...初始列表成员初始顺序: C++ 初始成员时,按照声明顺序初始不是按照出现在初始列表中顺序。 ?

    2K20

    C++ explicit禁止单参数构造函数隐式调用

    1.单参数构造函数隐式调用 C++中单参数构造函数可以被隐式调用,主要有两种情形会隐式调用参数构造函数: (1)同类型对象拷贝构造;即用相同类型其它对象来初始当前对象。...(2)不同类型对象隐式转换。即其它类型对象隐式调用参数拷贝构造函数初始当前对象。比如A a=1;就是隐式转换,不是显示调用构造函数,即A a(1);。...; 这种单参数构造函数被隐式调用C++被默许,但是这种写法很明显会影响代码可读性,有时甚至会导致程序出现意外错误。...2.单参数构造函数隐式调用危害 单参数构造函数隐式调用不仅仅会给代码可读性造成影响,有时会带来意外结果。...3.explicit禁止单参数构造函数隐式调用 在没有合适理由必须使用隐式转换前提下,为了提高代码可读性以及避免单参数构造函数隐式调用带来潜在风险,建议使用explicit关键字阻止单参数构造函数隐式调用

    4.7K60

    C++构造函数与析构函数

    C++中每个都有其构造与析构函数,它们负责对象创建和对象清理和回收,即使我们不写这两个,编译器也会默认为我们提供这些构造函数。...编译器是否真的会默认提供构造与析构函数 在一般讲解C++书籍中都会提及到当我们不为提供任何构造与析构函数时编译器会默认提供这样六种成员函数:不带参构造,拷贝构造,“=”重载函数,析构函数,以及带const...,当存在构造函数时,编译器会默认为子类添加构造函数,子类构造函数主要是调用构造函数。...最后总结一下默认情况下编译器不提供这些函数,只有自身有构造函数,或者自身或有虚函数时,编译器才会提供默认构造函数。...作为函数参数 当对象作为函数参数调用拷贝构造不是普通构造函数 下面一个例子代码: class CA { public: CA() { cout<<"构造函数

    1.6K10
    领券