构造函数一直看不懂,动手试了一次,总算懂了个一二。功夫不负有心人!
#include <iostream>
using namespace std;
//构造函数在对象生成的时候会被自动调用
//如果定义了构造函数,则编译器不生成默认的无参数构造函数
//一个类可以包含多个构造函数,对象使用哪个构造函数,取决于对象生成语句提供的参数类型、个数等
//一个对象必须初始化以后才能使用,而构造函数就是起到了这个初始化作用
//使用默认构造函数的类Test1
class Test1
{
private:
double real,imag;
public :
voidSet(double r,double i)
{
real=r;
imag=i;
}
getData(double *pr,double *pi)//用此方法才能取出private中的值
{
*pr=real;
*pi=imag;
}
}; //没有定义构造函数,编译器自动生成默认构造函数
//自定义构造函数的Test2
class Test2
{
private:
double real,imag;
public:
Test2(double r,double i=0) //定义构造函数,函数名和类名一样
{
real=r;
imag=i;
}
getData(double *pr,double *pi)
{
*pr=real;
*pi=imag;
}
};
//多个构造函数Test3
class Test3
{
private:
double real,imag;
public:
Test3(double r,double i) //定义构造函数1
{
real=r;
imag=i;
}
Test3(double r) //定义构造函数2
{
real =r;
imag=0;
}
Test3(Test3 t1,Test3 t2) //定义构造函数3
{
real=+;
imag=+;
}
getData(double *pr,double *pi)//定义一般的函数
{
*pr=real;
*pi=imag;
}
};
int main()
{
Test1 t1; //默认构造函数被调用
(1,2);
double a,b;
(&a,&b);
cout<<"a="<<a<<" b="<<b<<"\n";
//Test t2; //报错,因为缺少构造函数的参数
Test2 t2(3,4); //第二个参数可以不设置,那么就会默认设置为0
double c,d;
(&c,&d);
cout<<"c="<<c<<" d="<<d<<"\n";
Test3 t3(3); //使用第一个构造函数,带一个参数
double t30,t31,t32,t33,t34,t35;
(&t30,&t31);
cout<<"t30="<<t30<<" t31="<<t31<<"\n";
Test3 tt3(3,4); //使用第二个构造函数,带两个参数
(&t32,&t33);
cout<<"t32="<<t32<<" t33="<<t33<<"\n";
Test3 ttt3(t3,tt3); //使用第三个构造函数,参数为两个Test3类对象
(&t34,&t35);
cout<<"t34="<<t34<<" t35="<<t35<<"\n";
return 0;
}