最近學習了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 用乙個物件初始化另外乙個物件 由此,當函式的引數或者返回值為乙個物件時,使用的時候要小心,因為值傳遞的時候執行的是位拷貝,並不會呼叫物件的建構函式,也就是說生成的臨時物...