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.重力加速度只是垂直向下的,而飛機受到的加速度可能是各...