关于默认构造函数的说明

尽管有很多书中,都有关于默认构造函数的讲解,可是在实际的编程中,究竟有多少人可以清晰的认识到哪些场合中可以调用默认构造函数,哪些场合必须自己定义构造函数了,所以看似简单的概念,能将它充分理解的话,对学习和编程是很有帮助的。

下面就对默认构造函数做一个简单的讲解:

默认构造函数指不带参数或者所有参数都有缺省值的构造函数,默认构造函数”是能够被无参数调用的构造函数。因此,一个不带参数的构造函数当然是默认构造函数:

实例1:

class Fred {
public:
Fred(); // 默认构造函数: 能够被无参数调用
// ...
};
然而,如果参数被提供了默认值,那么带参数的默认构造函数也是可能的:


class Fred {
public:
Fred(int i=3, int j=5); // 默认构造函数: 能够被无参数调用
// ...
};

实例2:

带有默认实参的构造函数也可以称作默认构造函数

class Student
{
public:
Student(char* pName="no name")
{
strcpy(name,pName);
name[sizeof(name)-1]='\0';
}
protected:
char name[40];
};

void fn(int noOfObjects)
{
Student* ps=new Student[noOfObjects];
//...
delete []ps;
}
--------------------------
这里new Student[noOfObjects]调用的是Student(char* pName="no name")
构造函数 ,这个构造函数叫默认构造函数?

因为Student的构造函数提供了缺省参数,所以调用它时可以不用参数,因此如果Student没有提供其他构造函数,那么在定义Student对象数组时,将调用这个构造函数。缺省构造函数不一定是没有参数,而是在调用时不用参数。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值