c++到底有没有合成一个默认构造函数

如题所述

按照《深度探索C++对象模型》书中所述,默认构造函数并不是一定要合成,如果已经自定义构造函数,那么肯定不会合成,如果其数据成员有默认构造函数或其父类有默认构造函数或有虚函数或有虚基类等四种情况会合成,否则不一定合成,具体应该是看编译器的,书中的出发点是根据编译器需要决定是否合成。
温馨提示:内容为网友见解,仅供参考
无其他回答

C++:不存在默认构造函数?
C++:不存在默认构造函数,是代码错误造成的,解决方法如下:1、首先在C语言中,对象复制时,只对对象中的数据成员进行简单的赋值,如下图所示。2、若类中没有拷贝构造函数,编译器会自动产生一个默认拷贝构造函数,类似如下图。3、若对象中有动态成员,需要重新分配空间赋值。如下图所示。4、声明一个...

构造函数是用来初始化所定义的对象,如果一个类中没有定义任何构造函数...
不对,c++里不写类的构造函数时,编译器会为类创建一个默认的构造函数,虽然这个函数什么都不做,但是类的对象还是会在此时初始化,不过,对象成员的值是随机的,比如,指针型成员变量可能为NULL,也有可能不为NULL。

构造函数和默认构造函数有什么区别
C++编译器必须为未声明构造函数之class合成一个默认构造函数 第一,class 有member object(该member object有default constructor), class需要default constructor调用member object default constructor 第二,如果一个没有任何constructor的class 派生自一个"带有default constructor"的base class.那么它的default...

C++类中如果不定义复制构造函数的话,系统是不是自己定义默认的复制构造...
如果你没有定义复制构造函数,系统会为你生成一个默认的复制构造函数,但是,当你的类含有指针类型的私有数据成员时,默认的复制构造函数是危险的,因为它使两个对象的指针都指向了同一块内存区域,这时便是浅拷贝了。当你含有指针类型的私有数据成员时,必须得使用深拷贝。你可以搜一下关于浅拷贝和深拷...

C++中的Struct有没有默认的构造和析构函数?
C++中的Struct当然具备默认的构造和析构函数。Struct在C++中,实际上是一种特殊的类。它能够提供类所具备的全部特性。构造和析构函数就是其中的一部分。构造函数用于初始化对象,而析构函数则在对象的生命周期结束时负责清理资源。默认构造函数在类或结构体中不显式声明时,编译器会自动产生一个默认构造...

问一个C++构造函数的问题
默认构造函数只在没有定义任何构造函数的时候系统才会自动生成。拷贝构造函数也是构造函数 拷贝构造函数在没有显示定义的情况下系统会自动生成一个默认的拷贝构造函数 b项如果定义了带参数的构造函数,也不会生成默认构造函数了,所以是错的

C++类问题,构造函数的概念类问题。大神可不可以解释清楚一点
如果没记错,应该有3个,默认构造函数:MyClass()自定义的构造函数:MyClass(int)默认复制构造函数:MyClass(const MyClass&)任意一个类,即使是一个空类,编译器都会自动合成3个函数,一个是默认构造函数,一个是默认复制构造函数,一个默认析构函数。像上面这个类,编译器认为是这样的:class MyClass...

c++系统自动生成的构造函数是公有的还是私有的,不是说class构造类成员...
默认构造函数能在main中实列化对象所以为public,所谓的默认类成员为私有是指在未显式声明的情况下为private。即. class A{A();...}; viod main(){ A a; }将会报错。

c++编写一个类一定要加上构造函数吗?
但是你写的时候可以不写构造函数,但你构造出来的类还是有构造函数。这是因为你不写构造函数的话,其实 C++ 会自动的帮你加上一个构造函数,这个就是默认的构造函数。再贴一段百科的定义你就懂了:默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造...

用C++写的重载++的程序,已经有构造函数了,为什么还要添加一个默认的构造...
LZ也可以这样定义Point(float a = 1,float b = 2),这样的话就会有一个默认值,定义变量Point t0();就会有t0.x = 1,t0.y = 2这样的效果,但是括号是必须要有的,否则不算调用自定义的构造函数。所以,更直接的回答LZ的问题,你的程序里有形如Point t1(2,3)这样的变量定义,调用了自...

相似回答
大家正在搜