字串類中運算子過載出現的乙個問題

2021-07-12 02:26:08 字數 1139 閱讀 9422

上機輔導。學生的乙個程式莫名出問題。她是在做乙個string類,主要是要實現字串的連線。

程式是這樣的,請讀者將其拷到ide,邊看邊調:

#include 

#include

#include

using

namespace

std;

class string

;string::string()

string::string(const

char* s)

string::string(const string& s)

string operator+(const string& s1,const string& s2)

string operator-(const string& s1,const string& s2)

void string::show()

int main()

問題的表現是,str3.show();的輸出是幾個莫名的符號!

我讓她單步跟蹤一下,卻發現無論斷點設在**,總是要進到析構函式~string()中去!

恰其他同學的問題不少,我讓她將這個程式給我發郵件,她不要在此糾纏。我清楚,這裡有指標成員。禍水應該與此相關。

學習越來越深入,學生出問題的程式,常需要仔細閱讀後才能給指導意見了。

午睡後,開啟郵件。將程式拷入ide,已經注意到了執行str3=str1+str2;時,需要有的賦值運算子=的過載。試圖找一下單步時進入~string()時的場景,卻未遂。

在我的ide下,str3=str1+str2;的結果正常,str3=str1-str2;的結果卻異常。野指標的表徵,真偽混雜最頭疼。

過載賦值運算=,在類宣告中加:

string &operator=(const

string& s1);

實現為:

string &string::operator=(const

string &s1)

先向學生交作業。進入~string()的問題是否還在?暫時放下,待回音。

字串類中運算子過載出現的乙個問題

上機輔導。學生的乙個程式莫名出問題。她是在做乙個string類,主要是要實現字串的連線。程式是這樣的,請讀者將其拷到ide,邊看邊調 include include include using namespace std class string string string string strin...

字串類中的運算子過載

ifndef string h define string h include using namespace std class string endif include string.h include include include using namespace std string str...

字串類 運算子過載

mystring.h define crt secure no warnings includeusing namespace std 在這裡定義類只寫類的函式名,不寫類的函式體 c中沒有字串,字串 c風格字串 空串 class mystring const char c str2 int leng...