13 運算子過載

2021-09-25 22:48:16 字數 1671 閱讀 4219

所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有函式賦予新的定義,使之實現新的功能,因此,乙個函式名就可以用來代表不同功能的函式,也就是「一名多用」。

運算子也可以過載,運算子過載的本質是乙個函式。

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 這個語句...