青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 60, 文章 - 0, 評論 - 197, 引用 - 0
數據加載中……

C++ 拷貝構造函數與賦值函數

C++的拷貝函數和賦值函數既有聯系又有區別,不細究的話很容易搞混,遂以小例示之如下,權作解惑之用

// test.cpp
#include <iostream>
#include <stdlib.h>
#include <algorithm>
using namespace std;

class Book
{
public:
  Book(const char *name, const char*author, const double price): price(price) {
    this->name = new char[strlen(name)+1];
    this->author = new char[strlen(author)+1];

    strcpy(this->name, name);
    strcpy(this->author,author);
  }

  Book(const Book& book){
    name = new char[strlen(book.name)+1];
    author = new char[strlen(book.author)+1];

    price = book.price;
    strcpy(name, book.name);
    strcpy(author, book.author);
  }

  Book& operator=(const Book& rhs) {
    Book(rhs).swap(*this);           // 先創建臨時對象Book(rhs), 再調用下面的swap進行數據交換,
                                                  // 注意與*this交換數據的是臨時對象, rhs并未修改,只是swap
                                                  // 結束后臨時對象擁有了*this的數據, 而*this也擁有了由rhs
                                                  // 構造的臨時對象的數據, 臨時對象生命期結束時,*this的數據
                                                  // 會被銷毀。
    return *this;                             
  }

  ~Book(){
    delete[] name;
    delete[] author;
  }

private:
  Book& swap(Book& rhs) {
    double temp = rhs.price;
    rhs.price = price;
    price = temp;

    std::swap(name, rhs.name); // std::swap()只是簡單的交換指針的值
    std::swap(author, rhs.author);
    return *this;
  }
 
public:
  char* name;
  char* author;
  double price;
};

int main() {
  Book a("The C++ standard library", "Nicolai M. Josuttis", 98);
  Book b = a; // 對象b不存在, 拷貝構造函數在這里被調用

  Book c("Emacs Lisp manual", "stallman", 0);
  c = a; // c對象已經存在, 賦值函數(operator=)在這里被調用

  cout << a.name << endl;
  cout << a.author << endl;
  cout << a.price << endl << endl;

  cout << b.name << endl;
  cout << b.author << endl;
  cout << b.price << endl << endl;

  cout << c.name << endl;
  cout << c.author << endl;
  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

 

posted on 2007-09-09 17:49 Normandy 閱讀(2740) 評論(2)  編輯 收藏 引用 所屬分類: Programming

評論

# re: C++ 拷貝構造函數與賦值函數  回復  更多評論   

寫的不錯嗎?一個字:頂!
2007-09-17 10:32 | Kyle

# re: C++ 拷貝構造函數與賦值函數[未登錄]  回復  更多評論   

挺好
2010-08-06 18:12 | zhupf
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产亚洲精品v| 国产日韩欧美综合在线| 亚洲激情在线激情| 亚洲欧洲美洲综合色网| 免费国产自线拍一欧美视频| 99精品99| 亚洲综合欧美日韩| 一区二区三区在线观看视频| 欧美激情精品久久久久久蜜臀 | 欧美一级大片在线免费观看| 亚洲综合色激情五月| 黄色小说综合网站| 亚洲欧洲免费视频| 国产欧美va欧美不卡在线| 蜜月aⅴ免费一区二区三区| 欧美精品在线一区| 久久久999精品视频| 欧美精品日韩一本| 久久精品91| 欧美久久久久| 久久久久在线观看| 欧美视频网址| 欧美va亚洲va香蕉在线| 国产精品国产成人国产三级| 久久久无码精品亚洲日韩按摩| 欧美成人第一页| 久久激情视频久久| 欧美日韩一区二区三区四区五区| 久久精品国产免费看久久精品| 女同性一区二区三区人了人一 | 亚洲人成7777| 性伦欧美刺激片在线观看| 亚洲美女视频在线免费观看| 欧美一区二区三区婷婷月色 | 亚洲欧美区自拍先锋| 亚洲美女区一区| 久久精品人人做人人综合| 亚洲视频一区在线| 免费久久99精品国产自| 久久久精品国产99久久精品芒果| 欧美日韩亚洲另类| 亚洲高清资源综合久久精品| 国内精品免费午夜毛片| 亚洲制服av| 亚洲欧美国产视频| 欧美日韩精品一区二区| 亚洲国产欧美在线人成| 在线观看欧美精品| 久久精品免费看| 久久久精品tv| 国产一区二区三区成人欧美日韩在线观看 | 韩国av一区| 欧美一区二区三区视频在线观看| 亚洲欧美国产另类| 国产精品高清免费在线观看| 亚洲精品一区二区在线| 一本大道av伊人久久综合| 欧美激情影院| 亚洲精品一区二区三区福利| 日韩午夜剧场| 欧美母乳在线| 日韩视频免费| 亚洲在线播放| 国产九九精品视频| 欧美一区二区高清在线观看| 久久久青草婷婷精品综合日韩 | 一区二区亚洲欧洲国产日韩| 久久久国产精品一区二区三区| 久久精品国产亚洲aⅴ| 国产一区日韩一区| 久久手机精品视频| 亚洲国产三级| 亚洲欧美激情四射在线日| 国产精品亚洲成人| 久久成人精品| 欧美高清视频一二三区| 亚洲最新合集| 国产精品美腿一区在线看| 先锋影音久久久| 免费欧美在线| 亚洲色无码播放| 国产欧美一区二区三区国产幕精品| 久久成人精品电影| 亚洲国产欧美久久| 性欧美办公室18xxxxhd| 伊人久久大香线蕉综合热线| 欧美激情视频在线播放| 中文一区二区| 欧美成人久久| 亚洲尤物影院| 在线观看不卡| 国产精品伦一区| 美国十次成人| 亚洲无线观看| 欧美成人激情视频免费观看| 亚洲特级片在线| 伊人成人开心激情综合网| 欧美日韩国产区| 久久精品国产77777蜜臀| 亚洲欧洲一区| 久久综合狠狠| 亚洲欧美日本日韩| 最新成人av在线| 国产日韩av在线播放| 欧美大片在线观看一区| 午夜精品久久久久久久99水蜜桃| 最新日韩欧美| 免费在线视频一区| 欧美在线黄色| 亚洲五月六月| 日韩视频精品在线观看| 狠狠综合久久av一区二区老牛| 欧美日韩综合另类| 欧美电影在线免费观看网站| 久久久999精品免费| 亚洲视频在线看| 亚洲美女精品成人在线视频| 欧美.www| 久久亚洲一区二区| 久久精品国产亚洲一区二区| 亚洲图片欧美午夜| 日韩亚洲国产欧美| 亚洲大片精品永久免费| 好吊视频一区二区三区四区 | 国产欧美日本| 国产精品麻豆va在线播放| 欧美久久久久中文字幕| 免费亚洲视频| 蜜臀va亚洲va欧美va天堂| 欧美一区二区三区在线看| 亚洲欧美日韩精品综合在线观看| 一区二区三区视频在线| 亚洲免费精彩视频| 亚洲精品一区二区三区av| 亚洲欧洲一区二区天堂久久| 亚洲电影第1页| 91久久香蕉国产日韩欧美9色| 欧美激情精品久久久| 亚洲国产精品久久久久秋霞蜜臀| 免费成人小视频| 欧美第一黄网免费网站| 欧美黑人在线观看| 亚洲激情成人| 91久久精品日日躁夜夜躁欧美| 亚洲国产精品一区在线观看不卡| 欧美韩日一区二区三区| 亚洲高清自拍| 99re6这里只有精品| 中国av一区| 欧美一区二区三区视频在线观看| 久久国产视频网站| 久久这里只有精品视频首页| 女人天堂亚洲aⅴ在线观看| 欧美极品在线观看| 国产精品播放| 国产欧美精品国产国产专区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲国产精品久久精品怡红院| 亚洲三级免费观看| 亚洲一区二区三区精品在线 | 在线看片成人| 夜夜嗨av一区二区三区中文字幕 | 欧美一区二区三区免费在线看| 欧美在线免费观看视频| 免费亚洲电影在线观看| 亚洲精选在线| 欧美怡红院视频一区二区三区| 久久九九久久九九| 欧美激情中文不卡| 国产日韩欧美a| 亚洲人精品午夜| 午夜精品成人在线视频| 欧美成人高清视频| 一本色道久久综合亚洲精品小说| 先锋a资源在线看亚洲| 欧美成人午夜视频| 国产日产亚洲精品| 99视频超级精品| 久久久国产亚洲精品| 亚洲免费成人av电影| 久久精品国亚洲| 欧美三级在线视频| 亚洲国产乱码最新视频| 午夜精品一区二区三区在线| 欧美a级片网| 亚洲欧美一区二区激情| 欧美激情一二三区| 在线观看福利一区| 欧美自拍丝袜亚洲| 99re6热在线精品视频播放速度| 久久久久久久97| 国产日韩欧美综合| 亚洲一线二线三线久久久| 欧美黄色网络| 久久精品最新地址| 国产日本欧美视频| 午夜精品亚洲一区二区三区嫩草| 亚洲区一区二区三区| 六月婷婷久久| 狠狠色狠狠色综合人人|