您现在的位置: 网上现金棋牌游戏平台 >> 棋牌技巧 >> 棋牌开发 >> 正文
内容简介:默认的构造函数是指为所有参数都提供了默认值的构造函数,通常是指无参的构造函数。比如下面的类Test,它的默认构造函数就是Test()。本文由网上现金棋牌游戏平台www.crjq8.com编辑整理,介绍各种网上真钱棋牌游戏技巧,澳门赌场赌博技巧,提供各种网上博彩游戏,网上真钱游戏,免费试玩。希望C++中的默认构造函数这篇文章能给你提供帮助。 |
默认构造函数
默认的构造函数是指为所有参数都提供了默认值的构造函数,通常是指无参的构造函数。比如下面的类Test,它的默认构造函数就是Test()。
class Test
{
public:
Test(){} // default constructor
} ;
如果你没有为你的类提供任何构造函数,那么编译器将自动为你生成一个默认的无参构造函数。一旦你为你的类定义了构造函数,哪怕只是一个,那么编译器将不再生成默认的构造函数。
为你的类提供默认的构造函数
有很多原因,列举如下:
1. 当你使用静态分配的数组,而数组元素类型是某个类的对象时,就要调用默认的构造函数,比如下面的代码。
Object buffer[10]; // call default constructor
2. 当你使用动态分配的数组,而数组元素类型是某个类的对象时,就要调用默认的构造函数,比如下面的代码,如果Object没有默认的构造函数,是无法通过编译的,因为new操作符要调用Object类的无参构造函数类初始化每个数组元素。
Object* buffer = new Object[10];
3. 当你使用标准库的容器时,如果容器内的元素类型是某个类的对象时,那么这个类就需要默认的构造函数,原因同上。
vector<Object> buffer;
4. 一个类A以另外某个类B的对象为成员时,如果A提供了无参构造函数,而B未提供,那么A则无法使用自己的无参构造函数。下面的代码将导致编译错误。
class B
{
B(int i){}
};
class A
{
A(){}
B b;
};
int main(void)
{
A a(); // error C2512: 'B' : no appropriate default constructor available
getchar() ;
return 0 ;
}
再比如下面的代码,类A定义了拷贝构造函数,而没有提供默认的构造函数,B继承自A,所以B在初始化时要调用A的构造函数来初始化A,而A没有默认的构造函数,故产生编译错误。
class A
{
A(const A&){}
};
class B : public A
{
};
int main(void)
{
B b; //error C2512:'B': no appropriate default constructor available
getchar() ;
return 0 ;
}
==
麻将吃碰牌技巧 | 麻将舍牌不丢张技巧 |
麻将留牌舍牌技巧 | 麻将手牌排列技巧 |
血战到底麻将如何做牌技巧 | 麻将如何做牌和听牌技巧 |
麻将实战技巧猜牌篇 | 麻将赢牌技巧切勿过分迷恋手牌诀 |
麻将必赢技巧密切察视动牌与不动 | 眼睫毛是麻将牌战中的“间谍” |
[组图]万王宝藏 | 366 | |
玩捕鱼游戏的好处 | 1268 | |
[图文]捕鱼游戏机单网技巧 | 1198 | |
[图文]金蟾捕鱼大揭密 | 3701 | |
[图文]大圣闹海 | 2637 | |
[组图]捕鱼达人2安卓破解版 | 4249 | |
[组图]波克城市新版捕鱼达人 | 7336 | |
捕鱼游戏机赢钱技巧 | 49653 | |
[组图]捕鱼达人2全面介绍 | 6083 | |
qq捕鱼达人技巧 | 3868 | |
手部动作背后的心理 | |
根据手势判断对手的牌(二) | |
根据手势判断对手的牌(一) | |
手臂收回与冻结 | |
打牌中手臂的秘密 | |
躯干伸展的动作 | |
打牌时躯干动作给你的信号 | |
打牌过程中关于躯干的常识(二) | |
打牌过程中关于躯干的常识(一) | |
打牌露出马脚是要付出代价的(二) | |
2010-2013 © 网上现金棋牌游戏平台 版权所有 增值电信业务经营许可证:粤B2-20169873-8 文网文编号:粤网文[2016]789114-088号 |