首页 > 编程语言 >c++ 子类与父类的构造函数继承关系

c++ 子类与父类的构造函数继承关系

时间:2023-05-19 11:57:04浏览次数:32  
标签:调用 int 子类 c++ printf 父类 构造函数

规范上,子类构造函数肯定是会调父类的构造函数。   如果代码中没写,就会隐含调用父类的默认构造函数(即那个无参构造函数)。如果父类没有,编译报错。   1,展示了当子类要调用父类中带参数的构造函数 时:

#include <iostream>
#include <cstdio>

class A {
public:
    A() { printf("A(void) \n"); }
    A(int d) { printf("A %d\n", d); }
    ~A() { printf(" ~A \n"); }
};

class B : public A {
public:
    B() {
        printf("B(void) \n");
    }

    B(int x) : A(x) {
        printf("B \n");
    }

    ~B() { printf("~B \n"); }
};

int main(int argc, char* argv[]) {
    B c;
    B b(8); // This also automatically calls the same signature constructor of A
    return 0;
}
2,如果子类没有调用父类, 即 以前的     B(int x) : A(x) {         printf("B \n");     } 改成了     B(int x) : A(x) {         printf("B \n");     } 这是默认调用 A() 这个构造。   如果去掉 A() { printf("A(void) \n"); } 构造,      B(int x) : A(x) {         printf("B \n");     } 这个编译不过。因为没有默认 A()了。     输出结果:           一句一句分析:   B  c;            //首先调用A的无参(默认)构造函数,然后调用B的无参构造函数。   //所以先输出A(void),然后是B(void)       B  b(8);       //首先调用A的有参构造函数,然后调用B的有参构造函数。   //所以先输出A 8,然后是B           如果,没有显示调用A的有参构造函数呢?    答案是:不会调用A的有参构造函数,只会调用A的无参(默认)构造函数。如下图:                       ========================             ———————————————— 版权声明:本文为CSDN博主「奔跑的龙少」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/shine_journey/article/details/53188682

标签:调用,int,子类,c++,printf,父类,构造函数
From: https://www.cnblogs.com/bigben0123/p/17414661.html

相关文章

  • C++实现查询本机信息并且上报
    业务需求共享文件夹、盘会导致系统安全性下降,故IT部门需要搜集公司中每台电脑的共享情况,并且进行上报关键字WMI查询、Get请求、C++网络库mongoose前置需要1、简单C++语法知识2、mongoose库的导入3、C++项目的启动代码复制并不能直接使用,需导入mongoose库完整github项目代码......
  • 详解c++STL—容器list
    1、list基本概念1.1、概念描述链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由一系列结点组成功能:将数据进行链式存储1.2、结点的组成一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL中的链表是一......
  • c++ stoll
    stoll,字符串转换为longlong(114条消息)C/C++编程笔记:stol和stoll函数,函数调用中的字符串转换_c++stoll_一起学编程的博客-CSDN博客......
  • C/C++银行自助存取款机模拟程序[2023-05-18]
    C/C++银行自助存取款机模拟程序[2023-05-18]设计一个银行自助存取款机模拟程序,银行自助存取款机的用户包括银行管理员和客户,程序可实现这两类用户的基本操作需求。银行管理员:凭身份密码登录后可查看银行自助存取款机的余额、查询给定时间段内所有的交易信息(卡号、交易类型、交......
  • 从C到C++:学习C++的高级语法、STL和面向对象编程
    好的,那我为您写一篇有关C++编程的文章,详情如下。标题:从C到C++:学习C++的高级语法、STL和面向对象编程开头:C++语言是对C语言的扩展,是一种面向对象的程序设计语言。它具有丰富的数据类型、函数模板、类模板、标准模板库等高级特性。掌握高级语法、STL和面向对象编程,可以使程序员更加高......
  • C++趣味编程
    分糖果1#include<iostream>2usingnamespacestd;3intmain()4{5inti,count=0;6inta[10]={10,2,8,22,16,4,10,6,14,20};7intb[10]={10,2,8,22,16,4,10,6,14,20};8do{9a[0]=b[0]/2+b[9]/2;10for(intj=1......
  • c++打卡练习(33)
    求一个真分数的埃及分数表示埃及分数是指只使用1作为分子的分数,例如8/11=1/2+1/5+1/55+1/110;流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta,b,c,i,j; cout<<"请输入一个真分数"<<endl; cin>>a; getchar(); cin>>b; if(a>b){ cout<<......
  • C++
    文件定义一个Dog类,包括体重和年龄两个数据成员及其成员函数,声明一个实例dog1,体重5,年龄10,使用I/O流把dog1的状态写入磁盘文件。再声明一个实例dog2,通过读取文件dog1的状态赋给dog2。#include<iostream>#include<fstream>usingnamespacestd;classDog{public:      ......
  • 链式-父类中返回子类对象
    一晃五年没写博客了,依旧再C#上耕耘,依旧没有啥建树,现在也不知道.net上还有多少人再使用,在这里分享一些自己觉得写的还算优雅的代码。对于自己写着完的代码,我特别喜欢链式(来源于jQuery的影响吧),大部分时候链式就是将返回值为void类型的对象,返回this指针,直到我遇到一个特殊情况——在......
  • 《C++ 匿名对象》
    匿名对象通常具有如下特点:没有变量引用的对象。匿名对象的目的用于及时使用(一次使用)。匿名对象作为参数传递给函数。用于减少内存消耗。 生命周期:匿名对象的生命周期,只存在于当前代码的这一行,遇到;结束。 定义:Classname({parameters}); 例子:#include<iostre......