C 中operator用法,C operator用法

2022-02-13 04:12:18 字數 5150 閱讀 5729

1樓:匿名使用者

1.operator用於型別轉換函式:型別轉換函式的特徵:1)型轉換函式定義在源類中;2)須由operator修飾,函式名稱是目標型別名或目標類名;3)函式沒有引數,沒有返回值,但是有return語句,在return語句中返回目標型別資料或呼叫目標類的建構函式。

型別轉換函式主要有兩類:1)物件向基本資料型別轉換:物件向不同類的物件的轉換:

例程1://通過型別轉換函式求半徑為5的圓的面積//並將其儲存在float型變數中列印輸出#includeusingnamespacestd;classcareacarea(floata)//過載含有一個引數的建構函式voidgetarea()};voidmain()else}

2樓:匿名使用者

意思是說這個運算式結束後,返回的值做為左值的時候是char型別的例:string str = "abcdef";

str[1] = 'a'; //這時str[1],呼叫了operator,它做為左值的時候是char型別

如果str[1] = 0.12; //這樣就是錯的

c++operator用法.

3樓:灰紫太狼

1. operator 用於型別轉換函式:

型別轉換函式的特徵:

1) 型轉換函式定義在源類中;

2) 須由 operator 修飾,函式名稱是目標型別名或目標類名;

3) 函式沒有引數,沒有返回值,但是有return語句,在return語句中返回目標型別資料或呼叫目標類的建構函式。

型別轉換函式主要有兩類:

1) 物件向基本資料型別轉換:

物件向不同類的物件的轉換:

例程1:

//通過型別轉換函式求半徑為5的圓的面積

//並將其儲存在float型變數中列印輸出#i nclude

using namespace std;

class carea

carea(float a) //過載含有一個引數的建構函式

void getarea()

void getsalary()

};void main()

else}

c++,關於operator的詳細總解,(原理和用法)

4樓:匿名使用者

舉個例子:class a

假設有物件a,一般我們想用a.vec[index]來呼叫資料,但vec是私有啊。

所以你想a[index]來呼叫vec中的資料。

那麼 a &a::operator(int index)這樣就行了。

要把過載理解成函式,operator就是一個函式名,引數就是index

相當於a.operator(index);

希望能幫助你理解!

5樓:゛冰冰の回憶

一、過載例子:

class coperator

;#include ".\opartor.h"

#include

using namespace std;

coperator::coperator(void)

coperator::~coperator(void)

上述是一個過載的例子。應該說這幾種過載包含了過載的各種型別。下述章節中會分類介紹。

三、可以過載的運算子

c++規定了五個不能過載的運算子「.、::、.*、.->*、?」其它運算子都是可以過載的。

下列運算子不允許過載:

.,.,::,?:

四、運算子過載格式

返回型別 operator 運算子號(引數說明)

例如上例中對加法的過載

c++中規定,運算子中引數說明是內部型別時,不能過載。運算子過載過程中不會改變改運算子的運算優先順序。

五、運算子過載的引數

運算子過載的引數,往往是初學者難以掌握的。其實很簡單:參加運算的所有變數都是運算子的引數。

比如說加法過載過程中,有兩個參與的變數:加數和被加數。那我們就我對它進行過載的過程中需要兩個引數。

需要指出的增量運算子有兩種形式,前增量(運算子在變數前面)和後增量。前增量我們可以把他看做只有一個引數,而後增量我們可以看為a++0。事實上他是兩個引數。

只是在運算過程中,第二個引數我們不用而已。

運算子的過載有兩個方式,一種是做為成員函式,另一種是做為友無函式。前種c++預設省略第一個引數(事實上是物件本身),而後一種是所有的引數都要寫全。比如對加法的過載:

成員方式為在呼叫的過程中我們可以理解為result = operator+(op)

友元方式為在呼叫的過程中我們可以理解為result = operator-(op1,op2);

注:上面的理解方式可以看出,除了在呼叫形式上不同,過載的運算子和普通的函式是等效的。

六、返回值

c++中沒有對過載函式的返回值做太多的限制。為了使呼叫都能夠理解你所過載的函式,不會產生二義性。一般來講過載運算子的返回值會是該類的物件或是該類物件的引用。

在c++中所有函式(包括過載的運算子)在返回的過程中會構建一個返回型別的臨時物件。當函式執行完之後,這個物件會消失。應該說它是c++中生命週期最短的變數。

值得指出的是,系統構建這個臨時物件的過程中會呼叫copy建構函式。關於這一點筆都會在另一個話題中說明。

過載返回值是返回引用還是返回一個物件是由我們需要決定的。為了不讓呼叫者曲解,如果在運算過程中改變了參與運算的變數的值往往我們返回引用,如果不改變的話我們返回物件。例如:

在加法過載中,兩個參與運算的變數都沒有改變,所以我們就要返回一個新的物件,而不是兩個物件中的一個。(不要返回一個區域性引用,會出錯的)。而在前增量運算的過程中,返回的是我們改變後的物件,這樣直接返回引用就可以的。

過載運算子堅持4個「不能改變」。

不能改變運算子運算元的個數;

不能改變運算子原有的優先順序;

不能改變運算子原有的結合性;

不能改變運算子原有的語法結構。

·····下標運算子過載

由於c語言的陣列中並沒有儲存其大小,因此,不能對陣列元素進行存取範圍的檢查,

無法保證給陣列動態賦值不會越界。利用c++的類可以定義一種更安全、功能強的陣列型別

。為此,為該類定義過載運算子。

下面先看看一個例子:

#include <iostream.h>

class chararray

~chararray

int getlength

char & operator ;

private:

int length;

charbuff;

}; char & chararray::operator

} void main

該陣列類的優點如下:

其大小不心是一個常量。

執行時動態指定大小可以不用運算子new和delete。

當使用該類陣列作函式引數時,不心分別傳遞陣列變數本身及其大小,因為該對

象中已經儲存大小。

在過載下標運算子函式時應該注意:

該函式只能帶一個引數,不可帶多個引數。

不得過載為友元函式,必須是非static類的成員函式。

假如定義了一個類a,a有一個私有成員是一個整型陣列int member[size]。,有一個物件obj,需要訪問陣列中的某個成員,則需要obj.member[3]=5。

過載以後則可以obj[3]。這裡obj[3]看似一個陣列,其實不是,在這裡是一個物件。通過下標操作符[3]訪問物件obj的第4個元素。

const版本宣告:

const int& operator(int index) const //表示成員函式只能訪問資料成員,不能修改資料成員;給const的物件使用;

非const版本宣告:

int& operator(int index) //可以修改資料成員;給非const的物件使用。

在程式中對下標進行過載的時候一般要同時使用以上兩個版本的過載方法。只有非const版本無法賦值,只有const版本無法修改,兩者缺一不可。

下標符號(單目運算子)的過載必須是類的成員函式。

c++語言中 operator<<()怎麼用

6樓:匿名使用者

是過載輸出流麼?

這裡有個簡單例子

class opover

;friend ostream&operator<<(ostream&,constopover&);

private:

int a;

int b;

};//過載函式》實現

ostream&operator<<(ostream& os,const opover& rhs)

{os<

return os;。

7樓:匿名使用者

先舉個簡單例子吧 然後進行說明 寫個簡單的類 然後過載《運算子class data

};過載《的作用是:用於data類的物件不是基本型別,我們不能直接cout<

當我們cout<

8樓:匿名使用者

<< 必須喲兩個操作符。所以在申明的時候必須宣告一個引數,也必須要有一個返回值

如int operator << (int a);

C bool布林型的用法,C 中 bool的用法

布林型別?很多用處 啊。比如說。判斷什麼什麼是否存在,返回的就是布林。表中。除了性別。還有一些可以存布林的。有些東西要存是 否的。比如是否公開。bool型別適合表示只有兩種可能性的值,比如你說的性別,那麼我們定義bool 可以規定值為true時為男,值false時為女 當然也可以換一下,看個人規定 ...

c 入門關於while的用法,c 中while的用法

糾正一下,你用c 最好在最前面這樣寫。include using namespace std 不可以寫while a 1 要寫成while a 1 才可以的,你要好好補一下基礎。最後那個return 0 是告訴系統,你的程式正確退出了,如果你不寫,編繹器也會自動給你加上去的。while a 只要a ...

switch用法,c語言 switch的用法

1 switch用作名詞時意思是 開關 轉換 用作動詞時意思是 擰開關 轉變 轉換 指通過某種措施或辦法使某事物改變或改換其原有的位置 名稱或執行方式等,引申可表示 揮動某物打某人 開啟 2 switch可用作及物動詞,也可用作不及物動詞。用作及物動詞時,接名詞或代詞作賓語,也可接以動詞不定式充當補...