網(wǎng)購(gòu)app有哪些?長(zhǎng)沙seo計(jì)費(fèi)管理
文章目錄
- 一、后置運(yùn)算符重載
- 1、前置運(yùn)算符重載 與 后置運(yùn)算符重載 的區(qū)別
- 2、后置運(yùn)算符重載添加 int 占位參數(shù)
上 2 2 2 篇博客
- 【C++】運(yùn)算符重載 ④ ( 一元運(yùn)算符重載 | 使用 全局函數(shù) 實(shí)現(xiàn) 前置 ++ 自增運(yùn)算符重載 | 使用 全局函數(shù) 實(shí)現(xiàn) 前置 - - 自減運(yùn)算符重載 )
- 【C++】運(yùn)算符重載 ⑤ ( 一元運(yùn)算符重載 | 使用 成員函數(shù) 實(shí)現(xiàn) 前置 ++ 自增運(yùn)算符重載 | 使用 成員函數(shù) 實(shí)現(xiàn) 前置 - - 自減運(yùn)算符重載 )
講解了 前置運(yùn)算符 的 重載 , 前置運(yùn)算符就是 ++Object
或 --Object
, 一元運(yùn)算符 在 對(duì)象的 前面 ;
本篇博客開始講解 后置運(yùn)算符 的重載 ;
一、后置運(yùn)算符重載
1、前置運(yùn)算符重載 與 后置運(yùn)算符重載 的區(qū)別
后置運(yùn)算符 是 Object++
或 Object--
, 一元運(yùn)算符在對(duì)象的后面 ;
前置運(yùn)算符重載 與 后置運(yùn)算符重載 的區(qū)別是 返回值類型 不同 ,
- 前置運(yùn)算符重載 , 返回值是 對(duì)象引用 ;
// 使用 全局函數(shù) 實(shí)現(xiàn) 前置 ++ 自增運(yùn)算符重載
// 重載 前置 ++ 運(yùn)算符
// 實(shí)現(xiàn) 1 個(gè) Student 對(duì)象 自增運(yùn)算
// 由于 參數(shù)中的 Student& s 中的屬性發(fā)生了變化
// 返回時(shí)仍需要返回 Student& s 參數(shù)本身
Student& operator++(Student& s)
{s.age++;s.height++;return s;
};
- 后置運(yùn)算符重載 , 返回值是 匿名對(duì)象 ;
// 使用 全局函數(shù) 實(shí)現(xiàn) 后置 ++ 自增運(yùn)算符重載
// 重載 后置 ++ 運(yùn)算符
// 實(shí)現(xiàn) 1 個(gè) Student 對(duì)象 自增運(yùn)算
// 先使用 參數(shù)中的 Student& s 對(duì)象 , 再自增
// 因此 Student& s 對(duì)象是需要自增的
// 但是使用的對(duì)象 就是 返回的對(duì)象, 必須是沒(méi)有自增的對(duì)象
// 這里使用 ret 保存 s 對(duì)象值 , 然后返回該 ret 值
// s 對(duì)象中的值自增
// 返回的是一個(gè)新 Student 對(duì)象
Student operator++(Student& s)
{Student ret = s;s.age++;s.height++;return ret;
};
由于 重載函數(shù) 只看 函數(shù)名 和 參數(shù)列表 , 不看返回值 , 因此
- Student operator++(Student& s)
- Student& operator++(Student& s)
這 2 2 2 個(gè)函數(shù)被看做相同的函數(shù) ,
上述重載函數(shù)定義 , 在編譯時(shí)報(bào)錯(cuò) ,
error C2556: “Student operator ++(Student &)”: 重載函數(shù)與“Student &operator ++(Student &)”只是在返回類型上不同
2、后置運(yùn)算符重載添加 int 占位參數(shù)
因此 , 后置運(yùn)算符重載 , 通常需要一個(gè) 占位參數(shù) int ;
這個(gè)參數(shù)沒(méi)有實(shí)際的意義 , 只是為了和 前置運(yùn)算符重載 進(jìn)行區(qū)別 ;
// 使用 全局函數(shù) 實(shí)現(xiàn) 后置 ++ 自增運(yùn)算符重載
// 重載 后置 ++ 運(yùn)算符
// 實(shí)現(xiàn) 1 個(gè) Student 對(duì)象 自增運(yùn)算
// 先使用 參數(shù)中的 Student& s 對(duì)象 , 再自增
// 因此 Student& s 對(duì)象是需要自增的
// 但是使用的對(duì)象 就是 返回的對(duì)象, 必須是沒(méi)有自增的對(duì)象
// 這里使用 ret 保存 s 對(duì)象值 , 然后返回該 ret 值
// s 對(duì)象中的值自增
// 返回的是一個(gè)新 Student 對(duì)象
Student operator++(Student& s, int)
{Student ret = s;s.age++;s.height++;return ret;
};
占位參數(shù) 參考 【C++】函數(shù)參數(shù)擴(kuò)展 ② ( 占位參數(shù) | 占位參數(shù)規(guī)則 - 必須為占位參數(shù)傳入實(shí)參 | 默認(rèn)參數(shù)與占位參數(shù)結(jié)合使用 ) 博客 ;