/* (程序頭部註釋開始)
* 程序的版權和版本聲明部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 文件名稱:
* 作 者: 吳瑕
* 完成日期: 2012 年 03 月 19 日
* 版 本 號:
* 對任務及求解方法的描述部分
* 輸入描述:
* 問題描述: */設計三角形類,通過增加構造函數,使對象在定義時能夠進行初始化
#include<iostream>
#include<cmath>
using namespace std;
class Triangle
{public:
Triangle(float x=1,float y=1,float z=1);//聲明帶參數的默認構造函數併爲其賦初值
float perimeter();//計算三角形的周長
float area();//計算並返回三角形的面積
void showMessage();
private:
float a,b,c; //三邊爲私有成員數據
};
void Triangle::showMessage()
{
cout<<"三角形的三邊長分別爲:"<<a<<'\t'<<b<<'\t'<<c<<endl;
cout<<"該三角形的周長爲:"<< perimeter()<<'\t'<<"面積爲:"<< area()<<endl;
}
void main()
{
Triangle Tri1; //定義三角形類的一個實例(對象)(不用傳遞實參)
Tri1.showMessage();
// Triangle Tri2 (7,8,9); //定義三角形類的一個實例(對象)
// Tri2.showMessage();
}
Triangle::Triangle(float x,float y,float z)//在類外定義帶參數的構造函數
{
a=x;
b=y;
c=z;
}
float Triangle::perimeter()
{
return(a+b+c);
}
float Triangle::area()
{
float p,s;
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
return s;
}
運行結果:
上機心得:
默認參數的構造函數其實質意義即爲他也是一默認構造函數,無參數,當在類中聲明構造函數時可以省略其變量名。他和帶參數的默認構造參數的區別在於:他可以帶調用時不用傳遞實參,因爲已經值默認。