欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++輸入輸出操作符重載的深入分析

 更新時(shí)間:2013年05月29日 11:39:20   作者:  
本篇文章是對C++輸入輸出操作符重載進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
操作符的重載有一些規(guī)則:
1. 重載操作符必須具有一個(gè)類類型或枚舉類型操作數(shù)。這條規(guī)則強(qiáng)制重載操作符不能重新定義用于內(nèi)置類型對象的操作符的含義。
如:int operator+(int, int), 不可以   
2. 為類設(shè)計(jì)重載操作符的時(shí)候,必須選擇是將操作符設(shè)置為類成員還是普通非成員函數(shù)。在某些情況下,程序沒有選擇,操作符必須是成員;在另外一些情況下,有些經(jīng)驗(yàn)可以指導(dǎo)我們做出決定。下面是一些指導(dǎo):
a. 賦值(=),下標(biāo)([]),調(diào)用(())和成員訪問箭頭(->)等操作符必須定義為成員,將這些操作符定義為非成員函數(shù)將在編譯時(shí)標(biāo)記為錯(cuò)誤。
b. 像賦值一樣,復(fù)合賦值操作符通常應(yīng)定義為類的成員。與賦值不同的是,不一定非得這樣做,如果定義為非成員復(fù)合賦值操作符,不會(huì)出現(xiàn)編譯錯(cuò)誤。
c. 改變對象狀態(tài)或與給定類型緊密聯(lián)系的其他一些操作符,如自增,自減和解引用,通常應(yīng)定義為類成員。
d 對稱的操作符,如算術(shù)操作符,相等操作符,關(guān)系操作符和位操作符,最好定義為普通非成員函數(shù)。
e io操作符必須定義為非成員函數(shù),重載為類的友元。
復(fù)制代碼 代碼如下:

// OverloadCinCout.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;
class Fruit
{
public:
 Fruit(const string &nst = "apple", const string &cst = "green"):name(nst),colour(cst){}
 ~Fruit(){}
 friend ostream& operator << (ostream& os, const Fruit& f);  //輸入輸出流重載,不是類的成員,
 friend istream& operator >> (istream& is, Fruit& f);       // 所以應(yīng)該聲明為類的友元函數(shù)
private:
    string name;
 string colour;
};
ostream& operator << (ostream& os, const Fruit& f)
{
 os << "The name is " << f.name << ". The colour is " << f.colour << endl;
 return os;
}
istream& operator >> (istream& is, Fruit& f)
{
 is >> f.name >> f.colour;
 if (!is)
 {
  cerr << "Wrong input!" << endl;
 }
 return is;
}
int _tmain(int argc, _TCHAR* argv[])
{
 Fruit apple;
 cout << "Input the name and colour of a kind of fruit." << endl;
 cin >> apple;     
 cout << apple;
 return 0;
}

相關(guān)文章

  • C/C++宏定義的可變參數(shù)詳細(xì)解析

    C/C++宏定義的可變參數(shù)詳細(xì)解析

    在1999年版本的ISO C 標(biāo)準(zhǔn)中,宏可以象函數(shù)一樣,定義時(shí)可以帶有可變參數(shù)。宏的語法和函數(shù)的語法類似
    2013-09-09
  • 詳解如何從Matlab中導(dǎo)出清晰的結(jié)果圖片

    詳解如何從Matlab中導(dǎo)出清晰的結(jié)果圖片

    寫文章的時(shí)候有時(shí)需要matlab導(dǎo)出清晰的圖片,如果直接用figure里面的保存的話不夠清晰,下面這篇文章主要給大家介紹了關(guān)于如何從Matlab中導(dǎo)出清晰的結(jié)果圖片的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • C語言簡明講解預(yù)編譯的使用

    C語言簡明講解預(yù)編譯的使用

    在C語言的程序中包括各種以符號#開頭的編譯指令,這些指令稱為預(yù)處理命令。預(yù)處理命令屬于C語言編譯器,而不是C語言的組成部分,通過預(yù)處理命令可擴(kuò)展C語言程序設(shè)計(jì)的環(huán)境
    2022-05-05
  • C++實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)

    C++實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++實(shí)現(xiàn)教職工信息管理系統(tǒng)課程設(shè)計(jì)

    C++實(shí)現(xiàn)教職工信息管理系統(tǒng)課程設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)教職工信息管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 利用C語言的Cairo圖形庫繪制太極圖實(shí)例教程

    利用C語言的Cairo圖形庫繪制太極圖實(shí)例教程

    這幾天都在研究Cairo圖形庫,這是一個(gè)開源跨平臺(tái)的圖形庫,相對于OpenGL來說更容易上手使用。這篇文章是利用C語言的Cairo圖形庫繪制了一個(gè)太極圖,對大家學(xué)習(xí)Cairo圖形庫具有一定的參考借鑒價(jià)值,下面來一起看看吧。
    2016-12-12
  • C語言之結(jié)構(gòu)體定義 typedef struct 用法詳解和用法小結(jié)

    C語言之結(jié)構(gòu)體定義 typedef struct 用法詳解和用法小結(jié)

    這篇文章主要介紹了C語言的結(jié)構(gòu)體定義typedef struct用法詳解和用法小結(jié),typedef是類型定義,typedef struct 是為了使用這個(gè)結(jié)構(gòu)體方便,感興趣的同學(xué)可以參考閱讀
    2023-03-03
  • C++非遞歸建立二叉樹實(shí)例

    C++非遞歸建立二叉樹實(shí)例

    這篇文章主要介紹了C++非遞歸建立二叉樹的方法,實(shí)例分析了二叉樹的原理與C++實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C語言基礎(chǔ)文件操作方式超全詳解建議收藏

    C語言基礎(chǔ)文件操作方式超全詳解建議收藏

    這篇文章主要為大家介紹了關(guān)于C語言文件操作方式的詳細(xì)總結(jié),建議收藏隨用隨看,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Qt在線安裝加速的實(shí)現(xiàn)

    Qt在線安裝加速的實(shí)現(xiàn)

    本文主要介紹了Qt在線安裝加速的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評論