學習任務中,有幾道程式題,自己寫的拿出來記錄一下。
1.)宣告乙個複數類 complex,過載運算子「+」,「-」,「*」,「/」,使之能用於複數的加、減、乘、
除,運算子過載函式作為 complex 類的成員函式。程式設計序,分別求兩個複數之和、差、積和商。
思考:你編的程式能否用於乙個整數與乙個複數的算術運算?如 4+(5-2i)。
#include#includeusing namespace std;
class complex ; //預設建構函式,無形參
complex(double r, double i)
friend complex operator +(complex& x1, complex& x2);
friend complex operator - (complex& x1, complex& x2);
friend complex operator * (complex& x1, complex& x2);
friend complex operator / (complex& x1, complex& x2);
void dispplay();
private:
double real; //實部
double imag;//虛部
};complex operator +(complex& x1, complex& x2)
complex operator -(complex &x1, complex &x2)
complex operator *(complex &x1, complex &x2)
complex operator /(complex& x1, complex& x2)
void complex::dispplay()
else
cout << real << "+" << imag << "i" << endl;
}void main()
運算結果如下
2.)宣告乙個複數類 complex,過載運算子「+」,使之能用於複數的加法運算。參加運算的兩個運算量
可以都是類物件,也可以其中有乙個是整數,順序任意。例如: c1+c2, i+ c1, c1+i 均合法(設 i 為整數,
c1, c2 為複數)。執行程式,分別求兩個複數之和、整數和複數之和。
#include#includeusing namespace std;
class complex ; //預設建構函式,無形參
complex(double r, double i)
complex(double i) //轉換建構函式
friend complex operator +(complex x1, complex x2);
void display();
private:
double real; //實部
double imag;//虛部
};complex operator +(complex x1, complex x2)
void complex::display()
else
cout << real << "+" << imag << "i" << endl;
}void main()
執行結果為
3.)有兩個矩陣 a 和 b,均為 2 行和 3 列。求兩個矩陣之和。過載運算子「+」,使之能用於矩陣相加。
如: c=a+b。
#include#includeusing namespace std;
class zhen23 ;
void input();
friend zhen23 operator + (zhen23 x1, zhen23 x2); //過載+
void display();
private:
int x[2][3];
};void zhen23::input() }}
zhen23 operator +(zhen23 x1, zhen23 x2)
} return c;
}void zhen23::display() }}
void main()
執行結果為
4.)宣告乙個 teacher(教師)類和乙個 student(學生)類,二者有一部分資料成員是相同的,例如 num
(號碼), name(姓名), ***(性別)。編寫程式,將乙個 student 物件(學生)轉換為 teacher(教師)
類,只將以上 3 個相同的資料成員移植過去。可以設想為:乙個學生大學畢業了,留校擔任教師,他原有
的部分資料對現在的教師身份來講仍然有用,應當保留並成為其教師資料的一部分。
#include#includeusing namespace std;
class student ;
student(string a, int h, string n ,string s)
void display();
string duanwei;
int num;
string name;
string ***;
};class teacher
void display2();
private:
int num;
string name;
string ***;
};void student::display()
void teacher::display2()
void main()
執行結果為
運算子過載(C 學習記錄)
運算子過載概念 對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別 4.5.1 加號運算子過載 作用 實現兩個自定義資料型別相加的運算 class person person int a,int b 成員函式實現 號運算子過載 person operator const person...
C 運算子過載 二
友元函式實現複數加法 運算子過載實現思路 成員函式和友元函式,兩種區別在於 1.成員函式具有this指標,友元函式沒有 2.傳遞引數不同,實現 不同,應用場合也不同 兩者相同點是 運算子的使用方法一樣 include using namespace std class complex complex...
C 學習 運算子過載
同函式過載一樣,算數操作符過載能夠帶給我們操作不同資料型別的方法,包括你自己定義的類。我們日常最常用的就是加 減 乘 除,而它們的性質又有些相似。所以,它們的運算子實現方式也有些相似。共有三種實現方式 首先,我們介紹怎樣使用友鄰函式定義操作符過載。看下面的 include class cents 使...