构造函数为类对象分配内存空间。
构造函数是C++中用于初始化对象状态的特殊函数
构造函数在对象创建时自动被调用(默认调用),隐身调用
构造函数和普通成员函数一样尊重重载规则
拷贝构造函数是对象正确初始化的重要保证
必要时,必须手工编写拷贝构造函数
class Demo {
public:
Demo() { //无参数构造函数
a = 0;
b = 0;
p = NULL;
}
Demo(int _a, int _b, char * _p) { //带参构造函数
a = _a;
b = _b;
p = _p;
}
Demo(const Demo &obj) { //拷贝构造函数,用其它对象初始化
a = obj.a;
b = obj.b;
p = obj.p;
}
protected:
private:
int a;
int b;
char * p;
};
1、当类中没有定义任何一个构造函数,C++编译器会提供无参构造函数和拷贝函数
2、当类中定义了任意的非拷贝构造函(无参、带参数),C++编译器不会提供无参构造函数
3、当类中定义了拷贝构造函数时,C++编译器也不会提供无参构造函数
也就是只要人为提供了构造函数无论是无参、带参构造函数还是拷贝构造函数,编译器都不会再提供无参构造。
void fun(Demo d) { //将实参赋给形