C++构造函数实例讲解

时间:2025-05-12 08:00:47

构造函数一直看不懂,动手试了一次,总算懂了个一二。功夫不负有心人!

#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;
}