c 程式,執行錯誤,求解,C 程式沒有錯誤 但是執行不了 顯示停止工作 求大神指教啊 !!

2022-11-14 23:22:01 字數 1711 閱讀 5477

1樓:

首先指出其他同學的回答錯誤,當提供其他建構函式的時候,類不會提供預設建構函式,需要自己另外再提供,但是樓主的第一個建構函式:mystring ( char *s=0 )是有預設引數的,可以當作預設建構函式,因此不提供另外的預設建構函式也沒有錯。

其次,樓主的建構函式均有錯誤。在你的解構函式當中是這樣寫的:delete str; 而在你的2個建構函式中,當引數為空的時候,也就是這句:

else str=0;處理不正確。應該這樣處理:

if() ...

else

就是說構造一個空的物件的時候,依然要為其分配一個位元組,然後以'\0'結束。而不是直接將成員str = 0,這表明指標為空,將在物件析構以及對成員計算長度(如:strlen(s.

str))等操作的時候報錯。

再次,你的過載+=操作符有邏輯錯誤。因為有可能是這樣的情況:mystring s; s+=s; 就是說自己加自己的時候,那麼使用你的過載操作符將出錯。已經幫你修改好,如下:

mystring& operator += (mystring& s)

最後,提一點建議。

將你的建構函式的引數都應該加上const。

如:mystring ( const char *s=0 ) ,mystring ( const mystring& s )。

可以防止你在構造新物件的時候改變原來的資料。

還有在show函式後面加const,因為這個函式不會改變物件本身裡面的資料。

void show() const

2樓:鏡面世界

c中,只要自定義了建構函式,系統就不會給出預設建構函式了

樓上的,main函式頭上有int,但函式體內無返回,應在大括號內最後加上return 0;

3樓:匿名使用者

mystring s4;

s3 += s2;

s4 += s2;

mystring 類無預設建構函式,所以s4物件不存在s3無顯式宣告,無效變數。

c++程式沒有錯誤 但是執行不了 顯示停止工作 求大神指教啊 !!

4樓:硪丨曖戀

我在codeblocks執行是ok的。

樓主你把for(int j) 這裡加上int j = 0

再執行看看?

5樓:知足李子

for(int j=0; j < 3; j++)

j忘記初始化了

c++程式有錯誤,求解

6樓:匿名使用者

#include

enum cpu_rank;

enum ram_type;

class cpu

~cpu()

void run()

void stop()

};class ram

~ram()

void run()

void stop()

};class cdrom

~cdrom()

void run()

void stop()

};class computer

~computer()

void run()

void stop()

};void main()

C語言,有錯誤,請指教,C語言程式裡的錯誤,請高手幫忙指教一下

親 你的 我可以執行出來啊 你可以賦值的時候寫成n 0.0 e 0.0試試 或者你的編譯環境有問題 這是因為你束縛了兩個整數相除的商仍然是一個整數,所以就出錯了。下面是修改以後的程式 和執行的結果。include main e n 1 printf e f n e return 0 你用的什麼編譯環...

C語言程式編寫沒錯誤但是不能執行

跟include之間別留空格,還有你建檔案的時候是否檢測成功,以及你使用的vc軟體是否正常。字尾名掉了或者寫錯了 你的檔名後面要加.c或者.cpp,注意c前面有個點 不過你得把你的電腦上的文明副檔名顯示出來這樣做才有效 或者新建c檔案 命名時一定要帶上.c 問下你有沒有建c檔案?為什麼我的c語言程式...

C 程式求解,急,求C 程式編寫!!!急!!不要其他的,就用C

你好 1 類成員函式在類外定義時要宣告這個函式是屬於該類的 格式為 型別名 內 類名 函式名 源 中 函式operator的類容型就是 plex 也是類 plex的成員函式 因此在類外定義它時就應該寫成 plex plex operator 也就有了兩個 plex 2 plex plex opera...