构造函数分为三类
一:无参数构造函数;
二:带参数的构造函数
三:赋值构造函数*/
四:默认构造函数
#include<iostream>
using namespace std;
class test
{
public:
test()//无参构造函数
{
n_a=0;
n_b=0;
cout<<"无参数的函数"<<endl;
}
test(int a,int b)//有参数构造函数
{
n_a=a;
n_b=b;
}
test(const test& obj) //赋值构造函数 ,对象之间的初始化,用一个对象初始化另外一个对象
{
cout<<"我也是构构造函数"<<endl;
}
private:
int n_a;
int n_b;
protected:
} ;
//调用无参构造函数
int main01()
{
test t1;//这样子调用函数,如果什么都不写,他会调用无参构造函数。
cout<<"hello"<<endl;
return 0;
}
//调用有参构造函数的二种方法
int main()//调用有参构造类型 有三种方法
{
//第一种方法括号法 (C++编译器帮我们自动调用构造函数)
test t1(1,2);
//第二种直接调用构造函数 (手工调用构造函数)
test t4=test(1,2);//注意;直接调用构造函数将产生一个匿名对象(难点:匿名对象的去和留)此处不细讲。
//直接调用有参构造函数完成t4的初始化,t4只会调用一次构造函数,这个等号是初始化操作
cout<<"hello"<<endl;
/*注意 不能用test t2=(3,4)这种方法赋值,因为编译器认为这是一个逗号运算符,
只会将第二个数字给构造函数赋值,如果构造函数只有一个参数,那么这个方法可以进行调用*/
test t2=(3,4);
//赋值构造函数
t1=t4;//把t4copy给t1,这个等号是赋值操作 ,而直接调用构造函数的的等号是初始化操作
//对象的初始化和对象的赋值是两个不同的概念
//C++对=符号进行了功能性的增强
//默认构造函数 :
如果你的类中没有写构造函数 ,那么C++编译器会默认给你提供一个构造函数
return 0;
}