c 中 符號過載問題,這樣對嗎?為什麼錯誤提示無法解析

2025-02-17 23:25:11 字數 1278 閱讀 9207

1樓:篤俠

strcat_s(str, ;是不可以的,因為這樣的話,當兩個cstring類物件相加時,左邊的物件將被改變。

不知cstring類的資料成員str是什麼型別,如果是字元陣列(char str[..則該數字應該足夠大(能夠容納連線以後的字串);如果是字元指標(char *str),則建構函式中也要分配足夠大的記憶體才行。

如果第2條沒有問題,則函式體應這樣寫:

cstring tmp;

strcpy_s(, str);

strcat_s(,

return tmp;

2樓:star灬龍翔天宇

要懂得利用建構函式!建立臨時變數程式效率太低。

cstring tmp;

strcat(this->str, ;

strcat(, this->str);

return cstring(tmp);

3樓:匿名使用者

strcat(str, ;

裡面第乙個str是神馬東西?

c++中?:運算子為什麼不能過載?

4樓:網友

c++標準規定:

並不是所有的操作符都能被過載。除了。 ,sizeof,typeid這幾個運算子不能被過載,其他運算子都能被過載。

過載不能改變該運算子用於內建型別時的函義,程式設計師不能改變運算子+用於兩個int型時的含義。

運算子函式的引數至少有乙個必須是類的物件或者類的物件的引用。這種規定可以防止程式設計師運用運算子改變內建型別的函義。

過載不能改變運算子的優先順序。

過載不能改變運算子的結合律。

過載不能改變運算子運算元的個數。比如+需要兩個運算元,則過載的+也必須要有兩個運算元。

可看到,c++之所以不允許過載?:運算子,是考慮到?:運算子的條件特性。

運算子的過載實質是函式的呼叫。

比如 a?b:c

假設過載函式原型 operator ?:a,b,c)

那麼,其跳轉性質就不復存在了。

舉例說明:int a=0,b=0;

bool p = true;

p? (a = 10): b = 10);

執行結果 a=10 b=0;

轉換為函式呼叫形式。

operator ?:p,a=10,b=10);

執行結果 a=10 b=10

顯然 函式呼叫不能解決流程式控制制的問題,所以為了避免程式理解上的偏差,c++標準規定?:不能過載。

c 運算子過載問題

1 注意 有字首和字尾之別,字首形式是變數先加1然後執行表示式,而字尾形式則是先執行表示式然後再使變數加1,所以在執行字尾的 運算子時應先反回物件的原始值,然後才對物件加1。2 預設的帶有一個引數的 運算子函式是字首 運算子,要過載字尾的 運算子必須採用另一種方式實現。過載字尾的 運算子時應給函式多...

c中的引用符號的問題,請問C中的引用符號到底怎麼使用

這是引用的一個bai容易出du錯的地方,引用是一種複合型別zhi,呼叫上面函式的dao正確形式應內該為 xx bool變數名 呼叫容函式時,編譯器會這樣理解來傳值 bool b c bool變數名 你用常量的話,問題就來了,常量是不佔記憶體的,變數b c又怎麼和它共用一片空間呢?試試下面形式,boo...

飛機加速度過載計算問題,飛機引數中的過載是什麼意思

看不懂你題目是什麼意思?加速過載?為什麼最後加速度是60m s2?非勻加速直線運動?你是說加速度越來越大?飛機引數中的過載是什麼意思 航空術語 過載 既什麼受到幾個g的重量 飛機過載多少g什麼意思 這個g不是重力常數而是重力加速度,單位是m s2.重力加速度只是垂直向下的,而飛機受到的加速度可能是各...