c++ 允許在同一作用域中的某個函式和運算子指定多個定義,分別稱為函式過載和運算子過載。
過載宣告是指乙個與之前已經在該作用域內宣告過的函式或方法具有相同名稱的宣告,但是它們的引數列表和定義(實現)不相同。
一、函式的過載
1、函式的過載:c++允許用同一函式名定義多個函式,而這些函式的引數個數和引數型別可以不相同。即乙個函式名重新賦予它新的含義使乙個函式名可以多用。
2、普通成員函式過載舉例
class printdata
void print(double f)
void print(char c)
};int main(void)
執行結果:
整數為: 5
浮點數為: 500.263
字串為: hello c++
二、建構函式的過載
1、在乙個類中可以定義多個建構函式,以便為物件提供不同的初始化的方式,供使用者選用。這些建構函式具有相同的名字,而引數的個數或引數的型別不同。
2、用引數初始化表對資料成員初始化
c++提供了一種引數初始化表來實現資料成員初始化的方式
格式:類名::建構函式([參數列])[:成員初始化表]
[建構函式體]
舉例:
//用形參h初始化資料成員height;
//用形參w初始化資料成員width;
//用形參len初始化資料成員length;
box::box(int h,int w,int len):height(h),width(w),length(len){}
3、建構函式過載舉例
同乙個類中定義兩個建構函式,乙個有引數,乙個沒有引數
class box
//定義乙個有參的建構函式,用引數對資料成員初始化
int volume();//宣告函式成員
private:
int height;
int width;
int length;
}box::box() //類外定義無參建構函式
box::volume() //在類外定義成員函式
int main()
過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。
函式名:由operator和運算子組成 如上面叫做:「對運算子+過載的函式」
3、運算子過載函式的應用
#include using namespace std;
class box
void setlength( double len )
void setbreadth( double bre )
void setheight( double hei )
// 過載 + 運算子,用於把兩個 box 物件相加
box operator+(const box& b)
private:
double length; // 長度
double breadth; // 寬度
double height; // 高度
};// 程式的主函式
int main( )
distance(int f, int i)
// 顯示距離的方法
void displaydistance()
distance(int f, int i)
// 顯示距離的方法
void displaydistance()
{cout << "f: " << feet << " i:" << inches 《運算結果
d2 is less than d1
C 過載運算子和過載函式
c 函式過載 在同乙個作用域內,可以宣告幾個功能類似的同名函式,但這些同名函式的形式引數必須不同。c 中的運算子過載 過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。可過載運算子 不可過載運算子 可過載運算子 雙目算術運算子,關係運算子,邏輯運算...
C 過載運算子和過載函式
參考 前言 運算子過載和函式過載體現了物件導向技術的多型性。多型性機制不僅增加了物件導向軟體系統的靈活性,進一步減少了冗餘資訊,而且顯著提高了軟體的可重用性和可擴充性。從實現的角度來講,多型性可以劃分為兩類 編譯時的多型性和執行時的多型性。在c 語言中,編譯時的多型性主要是通過函式過載和運算子過載實...
C 過載函式和過載運算子
在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數 指引數的個數 型別或者順序 必須不同。不能僅通過返回型別的不同來過載函式。下面的例項中,同名函式print 被用於輸出不同的資料型別 include using namespace std class printf voi...