91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中有哪些賦值函數

發布時間:2021-07-19 16:18:05 來源:億速云 閱讀:196 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關C++中有哪些賦值函數,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

C++賦值函數相關代碼示例:

  1. // test.cpp  

  2. #include <iostream> 

  3. #include <stdlib.h> 

  4. #include <algorithm> 

  5. using namespace std;  

  6. class Book  

  7. {  

  8. public:  

  9. Book(const char *name, const char*author, const double price): 
    price(price) {  

  10. this->name = new char[strlen(name)+1];  

  11. this->author = new char[strlen(author)+1];  

  12. strcpy(this->name, name);  

  13. strcpy(this->author,author);  

  14. }  

  15. Book(const Book& book){  

  16. name = new char[strlen(book.name)+1];  

  17. author = new char[strlen(book.author)+1];  

  18. price = book.price;  

  19. strcpy(name, book.name);  

  20. strcpy(author, book.author);  

  1. Book& operator=(const Book& rhs) {  

  2. Book(rhs).swap(*this); // 先創建臨時對象Book(rhs), 
    再調用下面的swap進行數據交換,  

  3. // 注意與*this交換數據的是臨時對象, rhs并未修改,只是swap  

  4. // 結束后臨時對象擁有了*this的數據, 而*this也擁有了由rhs  

  5. // 構造的臨時對象的數據, 臨時對象生命期結束時,*this的數據  

  6. // 會被銷毀。  

  7. return *this;   

  8. }  

  9. ~Book(){  

  10. delete[] name;  

  11. delete[] author;  

  12. }  

  13. private:  

  14. Book& swap(Book& rhs) {  

  15. double temp = rhs.price;  

  16. rhs.price = price;  

  17. price = temp;  

  18. std::swap(name, rhs.name); 
    // std::swap()只是簡單的交換指針的值  

  19. std::swap(author, rhs.author);  

  20. return *this;  

  21. }  

  22. public:  

  23. char* name;  

  24. char* author;  

  25. double price;  

  26. };  

  27. int main() {  

  28. Book a("The C++ standard library", "Nicolai M. Josuttis", 98);  

  29. Book b = a; // 對象b不存在, 拷貝構造函數在這里被調用  

  30. Book c("Emacs Lisp manual", "stallman", 0);  

  31. c = a; // c對象已經存在, C++賦值函數(operator=)在這里被調用  

  32. cout << a.name << endl;  

  33. cout << a.author << endl;  

  34. cout << a.price << endl << endl;  

  35. cout << b.name << endl;  

  36. cout << b.author << endl;  

  37. cout << b.price << endl << endl;  

  38. cout << c.name << endl;  

  39. cout << c.author << endl;  

  40. cout << c.price << endl;  

編譯:

g++ -o test test.cpp

運行結果:

The C++ standard library  Nicolai M. Josuttis  98  The C++ standard library  Nicolai M. Josuttis  98  The C++ standard library  Nicolai M. Josuttis  98

看完上述內容,你們對C++中有哪些賦值函數有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

安义县| 六安市| 寻乌县| 台中市| 沙河市| 深水埗区| 遂宁市| 北碚区| 双辽市| 时尚| 修文县| 曲阜市| 鹰潭市| 安龙县| 勃利县| 墨玉县| 台前县| 新巴尔虎右旗| 东兰县| 连云港市| 南郑县| 高雄县| 衡水市| 农安县| 桐城市| 卢氏县| 讷河市| 习水县| 襄樊市| 乾安县| 宝兴县| 巩义市| 利辛县| 高邑县| 陵川县| 磐石市| 江油市| 尚义县| 内江市| 刚察县| 安泽县|