首页 > 其他分享 >默认构造函数学习

默认构造函数学习

时间:2024-04-21 22:22:22浏览次数:27  
标签:Bar int 默认 学习 基类 Foo 构造函数

转自:https://blog.csdn.net/sevenjoin/article/details/88314531,讲的很好。

1.介绍

若针对一个类没有显式地定义构造函数,那么编译器会隐式的为这个类生成一个默认构造成员函数。 默认构造函数就是在调用时不需要显示地传入实参的构造函数。

假如用户定义了其他构造函数(比如有参数的,或者参数不同的),那么编译器无论如何就不会再合成默认的构造函数了。

派生类和基类的关系,调用派生类的自定义的构造函数的时候,派生类会自动调用基类中的默认构造函数,而不能调用基类中的其他构造函数(除非在派生类的构造函数序列初始化的时候指明基类的构造函数,否则将会自动调用基类默认构造函数) 

 下面这段代码,编译有问题:

class Foo 
{ 
public:
// Foo(){};
// Foo() = default;// 让编译器生成一个默认的无参构造函数;可以让使用者一眼就看出这是一个合成版本的构造函数,没有其他功能。int val; Foo(int i):val(i){} }; class Bar:public Foo { public: char *str; int i; Bar(int i,char*s){ i=i; str=s; } };

 编译报错:

./seqid.cpp:75:20: error: no matching function for call to ‘Foo::Foo()’
   Bar(int i,char*s){
                    ^
./seqid.cpp:68:3: note: candidate: Foo::Foo(int)
   Foo(int i):val(i){}
   ^
./seqid.cpp:68:3: note:   candidate expects 1 argument, 0 provided
./seqid.cpp:64:7: note: candidate: constexpr Foo::Foo(const Foo&)
 class Foo 

可以把注释部分去掉一个,就可以了。或者Bar构造函数时显式调用:

  Bar(int i,char*s):Foo(10){
      i=i;
      str=s;
  }

 

标签:Bar,int,默认,学习,基类,Foo,构造函数
From: https://www.cnblogs.com/BlueBlueSea/p/18149625

相关文章

  • tarjan学习笔记
    在Tarjan算法中为每个结点u维护了以下几个变量:dfn[u]:深度优先搜索遍历时结点u被搜索的次序。low[u]:设以u为根的子树为Subtree(u)。 low[u]定义为以下结点的dfn的最小值: Subtree(u)中的结点;从Subtree(u)通过一条不在搜索树上的边能到达的结点。如何计算low?首先让low[x]......
  • 第15.16.17章学习笔记
    实际上的问题II15.1大整数的运算所有公钥中的计算都是基于大整数运算。如我们曾提及的,恰当地实现大整数运算并不是一件容易的事情。大多数的处理例程总是或多或少地与平台相关。能够通过平台特性得到的有效率提升总是难以发挥实际作用。比如,多数CPU有一种带进位加法运算(add-wi......
  • 1月20日,RPA 学习天地成功举办基于弘玑RPA公开课,让更多人用上RPA,用好RPA!
    1月20日,RPA学习天地成功举办了,基于弘玑CycloneRPA工具直播公开课,成功地帮助学员们初步了解了弘玑CycloneRPA的特色。  本次公开课,主要介绍了如何弘玑CycloneRPA工具来实现在中国执行信息公开网批量查询失信被执行的公司及个人的信息,并实现自动化保存的自动化流程。 RPA学......
  • [学习笔记] 丢番图方程 & 同余 & 逆元 - 数论
    首先,他们几个都是兄弟,有着极大的相似性。另外,他们的各自的思想都能够很好的服务于另外几个,有助于加深理解。线性丢番图方程丢番图不是个图啊!他是个man……——百度百科现在主要说的是二元线性丢番图方程:通用形式为\(ax+by=c\)。其中常数全都为整数。很像不定方程对吧?现在在......
  • 多项式学习笔记
    1.快速傅里叶变换(FFT)1.1.定义傅里叶变换(法语:TransformationdeFourier,英语:Fouriertransform,缩写:FT)是一种线性变换,通常定义为一种积分变换。其基本思想是一个函数可以用(可数或不可数,可数的情况对应于傅里叶级数)无穷多个周期函数的线性组合来逼近,从而这些组合系数在保有原函......
  • Google XTS测试学习
    XTS是一个统称,包含VTS、CTS、GTS,如果是TV类型产品,还要做netflix认证,简称NTS,其余TS含义如下: CTS测试简介Android的CTS测试,意为兼容性测试;只有通过CTS测试的设备才有可能获得Android的商标和享受AndroidMarket的权限AndroidCTS通过运行和安装一系列dex和APK文件,通过模......
  • 李沐动手学习深度学习 锚框部分代码解析
    这里只是对代码的解析,我在写这个解析的时候并没有看后面的内容,只能大概猜一下可能是要干嘛的首先是import相关工具,这里使用pytorch%matplotlibinlineimporttorchfromd2limporttorchasd2ltorch.set_printoptions(2)#精简输出精度1.生成锚框接下来是第一个难点,这......
  • JAVA学习第一次Blog
    前段时间老师在PTA上发布了三次大作业,这几次大作业的难度都比较高,对我来说除了前面的题目,最后的大分数压轴题我每次都做不出来。这与上个学期学的C语言作业难度简直不是一个等级的,不过JAVA老师也在上课期间一直强调,“我们JAVA课程一定要做出改变,不能说怕学生挂科就把难度设置的很......
  • linux shell 编程学习总结
    1文件和数组1.1读文件并将文件内容保存到数组,遍历数组src.f文件内容./src/xxx_1.md./src/xxx_2.md./src/xxx_3.md./src/xxx_4.md./src/xxx_5.mdrun.sh#!/bin/bash###readflisttoarraysrc_array=()whilereadline;dosrc_array+=("$line")done<$1##......
  • 吉他乐理学习
    和声是多个和弦构成的集合一、99%的和弦如下图所示(P143)二、大(明亮)三和弦和小(忧伤)三和弦以及增减(增减是指根音和五音是增减五度的关系)三和弦(P145)  三、三和弦的第一转位和第二转位(P146) ......