C++ | 类 | 构造参数

【项目1-三角形类的构造函数】

  设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化,可以由下面的类声明开始,需要自己实现相关的成员函数,以及增加要求的构造函数

(1)

使用带参数构造函数,Triangle(double x, double y, double z),三边长在调用时由实参直接给出。需要的测试函数是:

int main()  

{  

    Triangle Tri(7,8,9);    //定义三角形类的一个实例(对象)  

    Tri.showMessage();  

    return 0;  

}  

头文件:

#include <iostream>
#include<cmath>//C++专用,也兼容C的<math.h>
using namespace std;
class Triangle
{
public:
	Triangle(double x, double y, double z) :a(x), b(y), c(z) {}//直接在类体中定义构造函数
	double perimeter();//周长  
	double area();//面积  
	void showMessage();
private:
	double a, b, c; //三边为私有成员数据  
};


void Triangle::showMessage()
{
	cout << "三角形的三边长分别为:" << a << ' ' << b << ' ' << c << endl;
	cout << "该三角形的周长为" << perimeter() << ",面积为:" << area() << endl << endl;
}

double Triangle::perimeter()//不要忘记限定符
{
	return (a + b + c);
}

double Triangle::area()
{
	double s = (a + b + c) / 2;
	return(sqrt(s*(s - a)*(s - b)*(s - c)));

================================================================================================

(2)设计无参构造函数,默认各边长为1。需要的测试函数是:

int main()  

{  

    Triangle Tri;   //调用默认构造函数,不指定参数时,默认各边长为1;  

    Tri.showMessage();  

    return 0;  

}  

Triangle()
	{
		a = 1;
		b = 1;
		c = 1;
	}

================================================================================================

(3)使用带默认参数值的构造函数,不给定实参时,默认边长为1;注意——这个版本也只需要一个构造函数即可。需要的测试函数是:

int main()  

{  

    Triangle Tri1;   //定义边长为1 1 1的三角形类实例  

    Tri1.showMessage();  

    Triangle Tri2(1.5);//定义边长为1.5 1 1的三角形类实例  

    Tri2.showMessage();  

    Triangle Tri3(1.5,1.5);//定义边长为1.5 1.5 1的三角形类实例  

    Tri3.showMessage();  

    Triangle Tri4(7,8,9); //定义边长为7 8 9的三角形类实例  

    Tri4.showMessage();  

    return 0;  

}  

默认函数定义:

Triangle(double x=1, double y=1, double z=1) :a(x), b(y), c(z) {}

类文件:

using namespace std;
#include <iostream>
class Date
{
public:
	Date(int m = 1, int d = 1, int y = 2005) :month(m), day(d), year(y) {}//使用参数初始化表可以直接在类内定义
	void display();                                                       //使用默认参数可以避免函数重载
private:                                                                  //一个类只能有一个默认构造参数
	int month;
	int day;
	int year;
};

void Date::display()
{
	cout << month << "/"<< day << "/" << year<< endl;
}

main函数:

int main()
{
	Date d1(10, 13, 2005);
	Date d2(12, 30);
	Date d3(10);
	Date d4;
	d1.display();
	d2.display();
	d3.display();
	d4.display();
	system("pause");
	return 0;
}

运行结果:

猜你喜欢

转载自blog.csdn.net/IronBull_Zhang/article/details/83040284