所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有函式賦予新的定義,使之實現新的功能,因此,乙個函式名就可以用來代表不同功能的函式,也就是「一名多用」。
運算子也可以過載,運算子過載的本質是乙個函式。
class complex
public:
void printcom()
;double f::operator()(double x, double y)
int main()
&&和||是c++當中非常特殊的操作符,&&和||內建實現了短路規則,操作符過載是靠函式過載來完成的。運算元作為函式引數傳遞,c++的函式引數都會被求值,無法實現短路規則。
實現字串類
#pragma once
#include class mystring
;
#include "mystring.h"
#include void operator<<(std::ostream& out, mystring& ms)
void operator>>(std::istream& in, mystring& ms)
mystring::mystring(int len)
mystring::mystring(const char* p)
else }
mystring::~mystring()
mystring::mystring(const mystring& s)
mystring& mystring::operator=(mystring& ms)
this->length = ms.length;
this->m_space = new char[this->length + 1];
strcpy_s(this->m_space, this->length + 1, ms.m_space);
return *this;
}char& mystring::operator(int i)
bool mystring::operator==(mystring& ms)
else
}bool mystring::operator!=(mystring& ms)
else }
bool mystring::operator>(mystring& ms)
else }
bool mystring::operator<(mystring& ms)
else }
char* mystring::ptr_space()
void mystring::delete_space()
//測試
#include #include "mystring.h"
using namespace std;
int main()
if (s1 < s2)
if (s2 > s1)
if (s1 != s2)
char* p = s2.ptr_space();
if (p == nullptr)
//cout << "p被釋放";
cout << p;
}
13 運算子過載(一)
運算子過載 對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別 person personaddperson person p person operator person p include using namespace std class person int m a int ...
C Primer筆記13 運算子過載 總結
總結 1.不能過載的運算子 和 和 和 和 sizeof 和 typeid 2.過載運算子有兩種基本選擇 類的成員函式或者友元函式,建議規則例如以下 運算子建議使用 全部一元運算子 成員函式 必須是成員函式 似乎帶等號的都在這裡了.成員函式 全部其他二元運算子,比如 友元函式 3.前幾篇中的例項,如...
C 快速入門13 運算子過載
在平時專案中,有時候需要自定義一些常規的運算子給某個功能用,那麼就必須重新定義這個符號的功能了。有些運算子可以作為成員函式,有些運算子只能作為外部函式 比如輸入輸出流函式只可作為外部函式 加法運算子既可以作為成員函式,也可以作為外部函式。示例1 問題引入 int main cout stu 這個語句...