中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

郸城县| 灌南县| 玉田县| 马龙县| 永仁县| 富宁县| 南华县| 平山县| 门头沟区| 毕节市| 德化县| 东光县| 天台县| 梁河县| 思茅市| 新源县| 莆田市| 淮北市| 灵川县| 那坡县| 徐闻县| 诏安县| 长宁区| 神池县| 汉阴县| 囊谦县| 腾冲县| 呼玛县| 杭锦旗| 吕梁市| 彝良县| 亚东县| 盖州市| 望谟县| 吉水县| 繁峙县| 伊吾县| 嘉兴市| 囊谦县| 娱乐| 福建省|