導航:首頁 > 源碼編譯 > operator編譯

operator編譯

發布時間:2022-04-27 22:20:11

A. C++語言中 operator<<()怎麼用

先舉個簡單例子吧 然後進行說明 寫個簡單的類 然後重載<<運算符class Data
{
public:
int x;
int y; friend ostream &operator<<(ostream &os,Data &d)
{
os<<"d.x = "<<d.x<<endl;
os<<"d.y = "<<d.y<<endl;
return os;
}
};重載<<的作用是:用於Data類的對象不是基本類型,我們不能直接cout<<a(a為Data類的一個對象); 編譯器不知道該這么處理這個對象.但是我們重載了<<,這就提供了一個准則當cout的是Data的對象,就會自動去運用對應於Data對象的<<方式. 當我們cout<<a;的時候,就是把"cout"和"a"作為參數 傳給了重載的<<,上面的那個函數體裡面,所有的os被形參cout代替,所有的d被被a代替,這個函數里的內容其實就是根據自己的需要寫出的一種格式,怎麼寫都行.最後return os;即 返回一個對象的引用,這樣做的目的是使重載後的<<能夠連續使用.比如cout<<a<<b<<c;(a,b,c都是Data的對象)如果不return也是沒問題的 但就不能上面那樣寫了 只能分別寫cout<<a;cout<<b;cout<<c;了

B. 急急急急急急!!!!c語言中operator是什麼意思

operator 就是運算符啊,對啊包括加減乘除在內,但遠遠不止這些哦,包括什麼單目運算符,雙目運算符,三目運算符三種,按類型說還有什麼位運算符,邏輯運算符啊等等等等。不過常規意義上來說,如果你做一個程序讓人輸入一個operater,那麼對方一般默認是加減乘除這幾個(我指簡單程序啊)。
至於你說的ch,
Ch是一個跨平台的C/C++腳本解釋器,它支持ISO的C語言標准(C90/C99)和C++類庫,附帶了8000多個函數庫並支持眾多的工業標准,支持POSIX, socket/Winsock, X11/Motif, OpenGL, ODBC, C LAPACK, GTK+, Win32, XML, 和CGI等等。Ch具有MATLAB的高級數值計算和繪圖的功能,且具有良好的交互性,在C/C++語言編程學習方面尤為好用。Ch也是一個可嵌入的腳本引擎,可以無縫地嵌入到已編譯的程序中。
利用Ch,C/C++程序無需編譯就可以直接在多平台上運行。它實現了一種語言、到處運行的解決方案(One Language for All™)。

C. 我在一個類里重載了賦值運算符,把它聲明為類的友元, 編譯出錯:"operator ="必須是非靜態成員。

c++中 有四個操作符不能是全局域中的重載,這四個操作符是:=, ->, operator[ ], operator()。
所以=的重載不能聲明成類的友元。而且函數operator=默認是靜態成員函數,所以只能訪問靜態數據成員
你沒貼代碼,我就舉個例子吧:
class A {
public:
A &operator=(A &a); //ok 正確
friend A &operator=(const char *s); //錯誤,友元不屬於成員函數
private:
int _size;
char *_string;
};

D. 怎麼解釋operator+(8,7)的含義(在C++中)

從c++語法邏輯上講,operator+(8,7)就是8+7,加號操作符看做一個操作符被重載的函數,8和7是它的參數
但是如果兩個操作數都是內置基本類型,是不允許重載的(因為內置類型的運算符已經被定義好,如果允許重載,就有二義性問題了),8,7都是內置int基本類型,所以operator+(int,int)是不允許的,那麼operator+(8,7)在編譯期就是不合法的了

E. C++ operator=的問題

這里涉及到拷貝構造函數調用get()函數的參數匹配問題。
在拷貝構造函數中,形參是 const num &r,就是說,形參由const修飾,但當調用get()函數時,由於沒有顯式聲明該函數不修改參數的值(事實上也不修改),編譯程序認為,用const形參調用非const形參函數時,不能保證get()不修改參數的值,所以發出錯誤信息,修改方法很簡單,只需將get()函數聲明為int get()const即可。

第17行沒有給出返回值類型,在C中,編譯程序會假定為默認的int類型,但在C++中沒有這樣的默認,所以出錯。
這個函數是賦值運算符=重載,應該是這樣的:
num &operator=(const num *r) { *x = r.get(); return *thiis;}

F. C++編譯錯誤:'operator <<' is ambiguous

把下面的友元放到類定義裡面去

friend ostream & operator << (ostream & output, Office o)
{
output<<"Office:"<<endl;
output<<"層數:"<<o.getcs()<<endl;
output<<"滅火器數:"<<o.getmhqs()<<endl;
return output;
}

G. C++,operator重載的運算符我還是有一點不太懂.就是它的參數.單目的參數,雙目的參數都咋寫還有前綴和後綴

前綴的++和--是operator++()和operator--()
後綴的是operator++(int)和operator--(int),其中的int是為了讓編譯器區分調用的是前綴還是後綴運算符,不要使用其中的值。
雙目的參數就像operator+(A a, B b)。在一個類裡面的雙目運算符默認為以該對象作為第一個操作數,也就是B::operator+(A a)就相當於operator+(B b, A a)。
A+B的參數順序可以自己選擇。operator+(A a, B b)和operator+(B b,A a)都是可以的。
重載運算符的參數可以是兩個不一樣的類。

H. "operator"在C語言里是什麼關鍵字,具體什麼功用

1.operator是操作符的意思。operator是C++的關鍵字,不是C語言當中的,它和運算符一起使用,表示一個運算符函數,理解時應將operator=整體上視為一個函數名。

2.C++中的operator,有兩種用法,一種是operator overloading(操作符重載),一種是operator casting(操作隱式轉換)。下面分別進行介紹:
1)operator overloading
C++可能通過operator 重載操作符,格式如下:類型T operator 操作符 (),例如重載 +:
template<typename T> class A
{
public:
const T operator + (const T& rhs)
{
return this->m_ + rhs;
}
private:
T m_;
};

又比如STL中的函數對象,重載 ():
template<typename T> struct A
{
T operator()(const T& lhs, const T& rhs){ return lhs-rhs;}
};

2)operator casting
C++可能通過operator 重載隱式轉換,格式如下: operator 類型T (),如下所示
class A
{
public:
operator B* () { return this->b_;}
operator const B* () {return this->b_;}
operator B& () {return *this->b_;}
private:
B* b_;
};
A a;
當if(a),編譯時,其中它轉換成if(a.operator B*()),其實也就是判斷 if(a.b_)

I. C++ operator =

operator是個函數,在前面是下有返回類型的,否則會報錯無返回類型(假定為int)。

估計是編譯器的問題,在VS2008下,不加返回類型會報錯。

PS:我們老師說過,書上的不一定正確,一切都要自己運行才能確定。不同編譯器運行結果也可能不同

J. c++ 中 operator+和拷貝構造函數同時存在時編譯出錯 為什麼求大俠幫解釋

A(constA&o){n=o.n;}

大體來說就是 a+b 的結果是一個臨時對象,臨時對象不能綁定到A&

閱讀全文

與operator編譯相關的資料

熱點內容
哪個app多年輕人 瀏覽:902
租的伺服器如何重裝 瀏覽:937
乾眼症程序員 瀏覽:239
樂動達人安卓版有什麼游戲 瀏覽:484
c523壓縮比 瀏覽:543
命令語氣的人什麼心態 瀏覽:435
程序員喜歡留指甲嗎 瀏覽:516
七牛雲伺服器收費標准 瀏覽:627
時光相冊加密空間密碼忘記 瀏覽:474
華為雲為用戶提供的服務雲伺服器 瀏覽:634
minecraftlinux伺服器搭建 瀏覽:376
linux命令新建文件 瀏覽:709
長線pdf 瀏覽:607
程序員電腦支持手寫 瀏覽:414
解壓頭戴式耳機推薦 瀏覽:344
紙條app上怎麼樣看對方主頁 瀏覽:883
編譯英語單詞怎麼寫 瀏覽:249
編譯原理和匯編原理的區別 瀏覽:864
如何給加密的pdf解密 瀏覽:770
華為盒子時間同步伺服器地址 瀏覽:95