C 類中的拷貝構造 運算子過載實現

2021-08-16 01:59:51 字數 1662 閱讀 6223

最近學習了c++類的拷貝建構函式與運算子過載,據此模仿寫了個string類的實現,完成了字串的部分功能,實現了拷貝建構函式和運算子過載的函式。本文僅作為練習的記錄,不講理論。直接上**

string.h

//

// created by xiangqian on 18-3-3.

//#ifndef string_string_h

#define string_string_h

#include namespace xq

private:

char *m_data;

};}#endif //string_string_h

string.cpp

//

// created by xiangqian on 18-3-3.

//#include "string.h"

#include #include using namespace xq;

using namespace std;

string::string(const char *str) else

}string::~string()

string::string(const string &other)

string &string::operator=(const string &other)

string &string::operator=(const char *str) else

return *this;

}string &string::operator+=(const string &other)

string string::operator+(const string &other) const

string& string::operator+=(const char * str)

string string::operator+(const char * str) const

測試** main.cpp

#include #include "string.h"

using namespace std;

using namespace xq;

int main()

最終輸出為:

constructor

copy constructor

constructor

constructor

operator=(const string &)

operator=(const char *)

operator+=(const string &)

hello

operator+=(const char *)

helloworld!

*************************

operator+(const string &)

constructor

operator=(const string &)

operator+=(const string &)

helloworld!

operator+(const char *)

copy constructor

helloworld!

c 中拷貝建構函式與「 運算子過載」

本文只是演示何時呼叫拷貝建構函式,何時用 運算子過載 不考慮類的實現正確。問題 someclass a someclass b a 呼叫的是拷貝建構函式,還是 運算子過載?演示 include class tc tc tc tc a tc operator tc a private int x in...

實現複數類中的加運算子過載 C 運算子過載

int家有i1和i2弟兄倆,小手一拉i1 i2,加起來了 double家有d1和d2姐妹倆,小手也一拉,d1 d2,也加起來了。c 村子裡來了複數 complex 一家子,也有倆兄弟c1和c2,想要來個累加,笨乎乎地,c1.add c2 c1和c2傷心極了,也想像其他小朋友一樣,小手一拉,c1 c2...

拷貝建構函式和運算子過載

拷貝建構函式應用的場合由以下幾個方面 1 函式的引數是乙個物件,並且是值傳遞方式 2 函式的返回值是乙個物件,並且是值傳遞方式 3 用乙個物件初始化另外乙個物件 由此,當函式的引數或者返回值為乙個物件時,使用的時候要小心,因為值傳遞的時候執行的是位拷貝,並不會呼叫物件的建構函式,也就是說生成的臨時物...