運算符重載,就是對已有的運算符重新進行定義,賦予其另一種功能,以適應不同的數(shù)據(jù)類型。
1.若﹣2amb4與5an+2b2m+n可以合并成一項,求mn的值____________ 2.已知實數(shù)a,b,c滿足a2+b2=1,b2+c2=2,c2+a2=2,求ab+bc+ca的最小值____...
有效數(shù)字運算規(guī)則 由于與誤差傳遞有關,計算時加減法和乘除法的運算規(guī)則不太相同。1.加減法先按小數(shù)點后位數(shù)最少的數(shù)據(jù)保留其它各數(shù)的位數(shù),再進行加減計算,計算結果也使小數(shù)點后保留相同的位數(shù)。2.乘除法先按...
選中提示內(nèi)容 把構建刪掉重新畫
格式:pdf
大?。?span id="oocmmeo" class="single-tag-height">324KB
頁數(shù): 25頁
評分: 4.6
序號 圖 形 符 號 說 明 1 開關 (機械式 ) 2 多級開關一般符號多 線表示 3 (在非動作位置觸點斷 開) 4 接觸器 (在非動作位置 觸點閉合 ) 5 負荷開關 (負荷 ) 6 具有自動釋放功能的 負荷開關 7 熔斷器式斷路器 8 斷路器 9 隔離開關 10 熔斷器一般符號 11 跌落式熔斷器 12 熔斷器式開關 13 熔斷器式隔離開關 14 熔斷器式負荷開關 15 熔斷器式負荷開關 16 當操作器件被吸合時 延時閉合的動合觸點 17 當操作器件被釋放時 延時閉合的動合觸點 18 當操作器件被釋放時 延時閉合的動斷觸點 19 當操作器件被吸合時 延時閉合的動斷觸點 20 當操作器件被吸合時 延時閉合和釋放時延 時斷開的動合觸點 21 按鈕開關 (不閉鎖 ) 22 旋鈕開關、旋轉開關 (閉鎖 ) 23 位置開關 ,動合觸點 限制開關 ,動合觸點 24 位置開關 ,動斷觸點 限制開
格式:pdf
大?。?span id="c6sioue" class="single-tag-height">324KB
頁數(shù): 12頁
評分: 4.5
通 風 空 調(diào) 設 計 統(tǒng) 一 圖 例 電動對開式多葉調(diào)節(jié)閥: (電訊號比例調(diào)節(jié)風閥) 電動多葉送風(排煙)口:電訊號瞬間開啟或就地手動開啟,電動或手動復位。 定風量調(diào)節(jié)閥: 70℃防火閥: 70°C熔斷關閉,手動復位。 150℃防火閥: 150°C熔斷關閉,手動復位。 280℃防火閥: 280°C熔斷關閉,手動復位。 70℃防火調(diào)節(jié)閥: 70°C熔斷關閉,手動復位;手動調(diào)節(jié)風量。 280℃防火調(diào)節(jié)閥:電訊號瞬間自動開啟 (或關閉 ), 并輸出電信號 ,280℃熔斷關閉 ,電動或手 動復位。 70℃電動防火閥:電訊號瞬間自動關閉 , 并輸出電信號 ;電訊號再次自動開啟 ,70℃熔斷關閉 , 電動或手動復位。 280℃電動防火閥:電訊號瞬間自動關閉 ,并輸出電信號 ;電訊號再次自動開啟 ,280℃熔斷關 閉 ,電動或手動復位。 電動密閉閥: 風管止回閥: 加壓閥:常閉,電訊號自動開啟。 單層
1)非參數(shù)化多態(tài)(Ad-hoc polymorphism):
a)函數(shù)重載(Function Overloading)
b)運算符重載(Operator Overloading)
2)參數(shù)化多態(tài)(Parametric polymorphism)
c)模板(Template)
其實非參數(shù)化多態(tài)和參數(shù)化多態(tài)并不沖突,而且相輔相成,它們混合使用能夠帶來更大的靈活性,函數(shù)模板重載就是很好的例子:
template
T max(const T& lhs, const T& rhs)
{
return lhs > rhs "para" label-module="para">
}
template
T max(const T& fst, const T& sec, const T& thd)
{
return max(max(fst, sec), thd);
}
使用:
max(1, 3, 5);
max(2.4, 4.2);
兩個重載函數(shù)必須在下列一個或兩個方面有所區(qū)別:
1、函數(shù)有不同參數(shù)。
2、函數(shù)有不同參數(shù)類型,
C++的這種編程機制給編程者極大的方便,不需要為功能相似、參數(shù)不同的函數(shù)選用不同的函數(shù)名,也增強了程序的可讀性。
C++運算符重載的相關規(guī)定如下:
(1)不能改變運算符的優(yōu)先級;
(2)不能改變運算符的結合型;
(3)默認參數(shù)不能和重載的運算符一起使用;
(4)不能改變運算符的操作數(shù)的個數(shù);
(5)不能創(chuàng)建新的運算符,只有已有運算符可以被重載;
(6)運算符作用于C++內(nèi)部提供的數(shù)據(jù)類型時,原來含義保持不變。
不同編程范例中的表現(xiàn)形式
注:由于C 同時支持下面要提到的三種編程范例(Programming Paradigm) ,所以就用C 語言為例來說明
C 中對靜多態(tài)的支持方式有:全局函數(shù)重載和運算符重載。
全局函數(shù)重載代碼:
一下代碼中均不考慮函數(shù)的返回類型,因為C 中不允許只有函數(shù)類型不同的重載。
1)參數(shù)個數(shù)不同而參數(shù)類型相同(對應位置):
void defParamNum(int paramFst);
void defParamNum(int paramFst, double paramSec);
2)參數(shù)個數(shù)相同而參數(shù)類型不同:
void defParamType (int paramFst, double paramSec);
void defParamType (double paramFst, int paramSec);
3)參數(shù)個數(shù)和參數(shù)類型都不相同:
void defBoth(int paramFst);
void defBoth(double paramFst, int paramSec);
運算符重載代碼:
其實運算符重載也是一種函數(shù)重載。其中多了一些限制,比如一元運算符、二元運算符所要求的參數(shù)個數(shù),還有運算符重載的元型(Prototype)都有明確的規(guī)定,再就是一些像C語言等不支持運算符重載,所以這里單獨列出來。
一元運算符重載:(負值運算符 operator -)
Complex operator – (const Complex& elem)
{
// 復數(shù)temp的值為0 0i
Complex temp;
// 將temp的實部設為elem實部負數(shù)
temp.setReal(-elem.getReal());
// 將temp的虛部設為elem虛部的負數(shù)
temp.setImage(-elem.getImage());
// 返回temp復數(shù),此時temp就是elem對應的負數(shù)了
return temp;
}
二元運算符重載:(加法運算符 operator )
Complex operator (const Complex& lhs, const Complex& rhs)
{
// 復數(shù)temp的值為0 0i
Complex temp;
// 將temp的實部設為lhs和rhs實部的和
temp.setReal(lsh.getReal() rhs.getReal());
// 將temp的虛部設為lhs和rhs虛部的和
temp.setImage(lsh.getImage() rhs.getImage());
// 返回temp復數(shù),此時的temp就是lhs和rhs的和
return temp;
}
其實面向對象編程(Object-Oriented Programming)中也表現(xiàn)為函數(shù)重載和運算符重載。
函數(shù)重載:成員函數(shù)重載,靜態(tài)成員函數(shù)(static)重載,虛函數(shù)重載,友元函數(shù)重載。
class Complex {
public:
// 構造函數(shù)重載:
Complex() : m_real(0), m_image(0) { };
Complex(double real, double image) : m_real(real), m_image(image) { };
// 靜態(tài)成員函數(shù)重載:不恰當?shù)睦?
staticvoid staticFunc()
{
std::cout << "staticFunc()" << std::endl;
}
staticvoid staticFunc(int oneParam)
{
std::cout << "staticFunc(int oneParam)" << std::endl;
}
// 虛函數(shù)重載:不恰當?shù)睦?
virtualvoid virtualFunc()
{
std::cout << "virtualFunc()" << std::endl;
}
virtualvoid virtualFunc(int oneParam)
{
std::cout << "virtualFunc(int oneParam)" << std::endl;
}
// 虛函數(shù)重載:不恰當?shù)睦印F溆言瘮?shù)就是一般的全局函數(shù)
friendvoid friendFunc();
friendvoid friendFunc(int oneParam);
// 運算符重載:Comple Comple
// Complex Complex成員版本:允許一個complex對象和另一個Complex對象相加
Complex operator (const Complex& elem)
{
return Complex(m_real elem.m_real, m_image elem.m_image);
}
// Complex double成員版本:允許一個complex對象和另一個double對象相加
// 只能是Complex double,不能是double Complex
Complex operator (double elem)
{
return Complex(m_real elem, m_image);
}
// Complex Complex友元版本:允許一個complex對象和另一個Complex對象相加
friend Complex operator (const Complex& lsh, const Complex& rhs)
{
return Complex(lsh.m_real rhs.m_real, lsh.m_image rhs.m_image);
}
// Complex double友元版本:允許一個complex對象和另一個double對象相加
// 只能是Complex double,不能是double Complex
friend Complex operator (const Complex& lsh, double rhs)
{
return Complex(lsh.m_real rhs, lsh.m_image);
}
// double Complex友元版本:允許一個double對象和另一個Complex對象相加
//只能是double Complex,不能是Complex double
//和上面的Complex double友元版本相輔相成
friend Complex operator (double lhs, const Complex& rhs)
{
return Complex(lhs rhs.m_real, rhs.m_image);
}
private:
double m_real;
double m_image;
};
void friendFunc()
{
std::cout << "virtualFunc()" << std::endl;
}
void friendFunc(int oneParam)
{
std::cout << "virtualFunc(int oneParam)" << std::endl;
}
運算符重載:運算符成員式重載,運算符友元式重載。
注:見Complex類定義中的運算符重載部分!
在C 中,泛型編程(Generic Programming) 是通關過模板來實現(xiàn)的,然而模板不是與上述兩種編程范例有所不同,它必須依附于上述的某種范例,在某范例的基礎上來實現(xiàn),就像面向對象和過程化編程的關系一樣。下面就是模板分類:
按泛化對象可分為:
1)類型泛化(Type):
template
class List {
// ...
};
List iList; // iList是能夠存儲int類型的鏈表對象
2)數(shù)值泛化(Value):
template
class Bit {
// ...
};
Bit<3> bit3; // bit3是長度為3位的位對象
3)數(shù)值和類型泛化(Type & Value):
template
class Array {
// ...
};
Array iArray3; // iArray3是能夠存儲3個int類型的數(shù)組對象
按泛化的載體可分為:
函數(shù)模板:
template
void functionGeneric()
{
// ...
}
類模板:
template
class classGeneric {
// ...
};