默认构造函数的定义
4个回答
展开全部
就是 类名 { }; 结束
默认构造函数 默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式就会使用默认构造函数。 如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,称为合成的构造函数(synthesized default constructor)。 如果类包含内置或复合类型的成员,则该类就不应该依赖于合成的默认构造函数,它应该定义自己的构造函数来初始化这些成员。 C++编译器必须为未声明构造函数之class合成一个默认构造函数 第一,class 有member object(该member object有default constructor), class需要default constructor调用member object default constructor 第二,如果一个没有任何constructor的class 派生自一个"带有default constructor"的base class.那么它的default constructor会被合成出来。 第三,如果一个class申明了virtual function,,如果该类没有任何constructor, 编译器也会为它加default constructor. (如果用户有constructor,编译器会在他的constructor中添加一些code,用来初始化vptr) 第四,一个class(没有申明任何constructor)派生自一个继承串链,其中有一个或多个virtual base classes,编译器也会合成出一个default constructor,在其中放入每一个virtual base class的执行期存取操作的的码, (如果用户申明了constructors,编译器会在constructor中安插virtual base class执行期存取操作的的码) 上面四种分析合成出的default constructor都是nontrivial default constructors, 不在此情况之内的都trivial default constructors,它们实际上并不会被编译器合成出来 在合成的default constructors,只有base class subobjects和member class object会 被初始化,所有其它的nonstatic data member,如整数、整数指针、整数数组等等都不会被编译器初始化。
默认构造函数 默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式就会使用默认构造函数。 如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,称为合成的构造函数(synthesized default constructor)。 如果类包含内置或复合类型的成员,则该类就不应该依赖于合成的默认构造函数,它应该定义自己的构造函数来初始化这些成员。 C++编译器必须为未声明构造函数之class合成一个默认构造函数 第一,class 有member object(该member object有default constructor), class需要default constructor调用member object default constructor 第二,如果一个没有任何constructor的class 派生自一个"带有default constructor"的base class.那么它的default constructor会被合成出来。 第三,如果一个class申明了virtual function,,如果该类没有任何constructor, 编译器也会为它加default constructor. (如果用户有constructor,编译器会在他的constructor中添加一些code,用来初始化vptr) 第四,一个class(没有申明任何constructor)派生自一个继承串链,其中有一个或多个virtual base classes,编译器也会合成出一个default constructor,在其中放入每一个virtual base class的执行期存取操作的的码, (如果用户申明了constructors,编译器会在constructor中安插virtual base class执行期存取操作的的码) 上面四种分析合成出的default constructor都是nontrivial default constructors, 不在此情况之内的都trivial default constructors,它们实际上并不会被编译器合成出来 在合成的default constructors,只有base class subobjects和member class object会 被初始化,所有其它的nonstatic data member,如整数、整数指针、整数数组等等都不会被编译器初始化。
参考资料: http://baike.baidu.com/view/2785579.htm
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
默认构造函数是不用用户定义的,系统有默认的构造函数、、、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class A
{
int x,y;
public:
A(); //默认构造函数
{
x=1;
y=2;
}
A(int a=0,int b=1) // 默认构造函数
{
x=a;
y=b;
}
};
默认构造函数就是不需要任何参数的构造函数
{
int x,y;
public:
A(); //默认构造函数
{
x=1;
y=2;
}
A(int a=0,int b=1) // 默认构造函数
{
x=a;
y=b;
}
};
默认构造函数就是不需要任何参数的构造函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还一个名字,叫无参构造
类名()
{
}
还一种
就是
类名(参数列表)///所有参数均有默认值,可当做默认构造使用,其实还是相当于无参构造
{
}
类名()
{
}
还一种
就是
类名(参数列表)///所有参数均有默认值,可当做默认构造使用,其实还是相当于无参构造
{
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询