C++ 對結(jié)構(gòu)體的操作

2023-03-20 15:56 更新

大多數(shù)我們在其他類型上使用的操作符,例如數(shù)學(xué)運(yùn)算符( +, %等)以及比較運(yùn)算符(==,>等),都不適用于結(jié)構(gòu)體。事實(shí)上,可以為這種新類型定義這些操作符的含義,不過在這本書中我們不會這么做。

另一方面,賦值運(yùn)算符確實(shí)適用于結(jié)構(gòu)。它可以用在兩種方式上:初始化結(jié)構(gòu)的實(shí)例變量或把實(shí)例變量從一個結(jié)構(gòu)復(fù)制到另一個結(jié)構(gòu)。一個初始化結(jié)構(gòu)看起來像這樣:

Point blank = { 3.0, 4.0 };

大括號里的值被依次賦給結(jié)構(gòu)的實(shí)例變量。在這種情況下,x得到了一個值,y得到第二個值。

不幸的是,這個語法僅僅只能用在初始化中,而不能在賦值語句中。因此以下就是非法的。

Point blank;
blank = { 3.0, 4.0 };    // 錯誤!!

你可能想知道為什么如此完美合理的語句會是非法的;我不確定,但是我認(rèn)為問題應(yīng)該是編譯器無法知道右邊應(yīng)該是什么類型。如果你添加一個類型定義:

Point blank;
blank = (Point){ 3.0, 4.0 };

這就可以了。

把一個結(jié)構(gòu)賦給另一個結(jié)構(gòu)是合法的。例如:

Point p1 = { 3.0, 4.0 };
Point p2 = p1;
cout << p2.x << ", " <<  p2.y << endl;

這個程序的輸出是3, 4。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號