【项目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;
}
运行结果: