最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中的三大函數(shù)和操作符重載(Boolan)

 更新時(shí)間:2017年02月15日 10:54:11   作者:凍結(jié)的企鵝  
本文主要介紹了C++中的三大函數(shù)和操作符重載(Boolan)的相關(guān)知識。具有很好的參考價(jià)值,下面跟著小編一起來看下吧

C++中三大函數(shù):

  • 析構(gòu)函數(shù)
  • 復(fù)制構(gòu)造函數(shù)
  • =操作符(copy assignment operator)

這三個(gè)特殊的成員函數(shù)如果程序員沒有實(shí)現(xiàn),編譯器將提供默認(rèn)的實(shí)現(xiàn)方式。

析構(gòu)函數(shù):

形如~foo_t(),函數(shù)名和構(gòu)造函數(shù)相同,前面加~,如果對象是自由變量創(chuàng)建,析構(gòu)函數(shù)將在脫離作用域時(shí)調(diào)用。如果對象是通過new操作符創(chuàng)建的,則通過delete操作符調(diào)用析構(gòu)函數(shù)。

復(fù)制構(gòu)造函數(shù):

形如foo_t(const foo_t& foo),以下情況復(fù)制構(gòu)造函數(shù)均會被調(diào)用:

  1. 當(dāng)對象按值返回時(shí)候(returned by value)
  2. 調(diào)用按值傳參的函數(shù)(passed by value)
  3. 通過thrown拋出或caught捕獲的對象
  4. 對象處于()包圍的初始化列表中

=操作符:

重載=操作符,如foo_t& operator=(const foo_t& foo),對已有對象的賦值操作將調(diào)用該函數(shù)(未初始化的對象成員將調(diào)用復(fù)制構(gòu)造函數(shù))。

以下為代碼實(shí)例:

#include <cstring>
#include <iostream>
class foo_t {
 friend std::ostream &operator<<(std::ostream &os, foo_t const &foo) {
  os << foo.data;
  return os;
 }
 public:
 foo_t(void) : data(new char[14]) { std::strcpy(data, "Hello, World!"); }
 ~foo_t(void) { delete[] data; }
 foo_t(const foo_t& other);
 foo_t &operator=(const foo_t& other);
 private:
 char *data;
};
foo_t::foo_t(const foo_t& other) {
 std::cout << "call copy constructor!!!" << std::endl;
 this->data = new char[strlen(other.data) + 1];
 strcpy(this->data, other.data);
}
foo_t& foo_t::operator=(const foo_t& other) {
 std::cout << "call the copy assignment operator!!!" << std::endl;
 if (this == &other)
   return *this;
 this->data = new char[strlen(other.data) + 1];
 strcpy(this->data, other.data);
 return *this;
}
int main() {
 foo_t foo;
 std::cout << foo << '\n';
 foo_t t(foo);
 // foo_t t2 = t;
 foo_t t3;
 t3 = t;
 return 0;
}

為了方便測試,可以分別在析構(gòu)函數(shù)、拷貝構(gòu)造、=重載處設(shè)置斷點(diǎn),觀察程序執(zhí)行流程。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • OpenCV利用高斯模糊實(shí)現(xiàn)簡單的磨皮美顏效果

    OpenCV利用高斯模糊實(shí)現(xiàn)簡單的磨皮美顏效果

    這篇文章主要介紹了通過OpenCV中的高斯模糊以及雙邊模糊來實(shí)現(xiàn)一個(gè)簡單的磨皮美顏效果,文中的講解很詳細(xì),感興趣的同學(xué)可以學(xué)習(xí)一下
    2021-12-12
  • Effective?C++?學(xué)習(xí)筆記

    Effective?C++?學(xué)習(xí)筆記

    這篇文章主要介紹了Effective?C++?學(xué)習(xí)筆記,想學(xué)習(xí)Effective?C++的朋友可以參考一下
    2023-08-08
  • c++如何控制對象的創(chuàng)建方式(禁止創(chuàng)建棧對象or堆對象)和創(chuàng)建的數(shù)量

    c++如何控制對象的創(chuàng)建方式(禁止創(chuàng)建棧對象or堆對象)和創(chuàng)建的數(shù)量

    這篇文章主要介紹了c++如何控制對象的創(chuàng)建方式和創(chuàng)建的數(shù)量,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • C語言函數(shù)指針的老生常談

    C語言函數(shù)指針的老生常談

    這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 使用C++的inipp庫處理配置文件.ini的示例詳解

    使用C++的inipp庫處理配置文件.ini的示例詳解

    一個(gè)ini文件由多個(gè)節(jié)section組成,每個(gè)節(jié)由多個(gè)鍵值對組成,本文給大家介紹了使用第三方庫inipp來操作ini文件,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • C++設(shè)計(jì)模式之外觀模式(Facade)

    C++設(shè)計(jì)模式之外觀模式(Facade)

    這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之外觀模式(Facade),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 一文詳解C++中的mutable關(guān)鍵字

    一文詳解C++中的mutable關(guān)鍵字

    在C++中mutable關(guān)鍵字正如字面意思所示,表示「可變的」之意,一般在以下兩種情況中使用較多,一是修飾類中的變量,用來突破const的限制,二是在Lambda表達(dá)式中使用,用來捕獲修改表達(dá)式之外的變量值,下面我們就針對這兩種使用場景逐個(gè)介紹
    2023-10-10
  • boost字符串處理函數(shù)format的用法

    boost字符串處理函數(shù)format的用法

    這篇文章介紹了boost字符串處理函數(shù)format的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 淺談C語言的變量和常量

    淺談C語言的變量和常量

    這篇文章主要為大家詳細(xì)介紹了C語言的變量和常量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 關(guān)于STL中的map容器的一些總結(jié)

    關(guān)于STL中的map容器的一些總結(jié)

    對于map的學(xué)習(xí),或者說是對STL中的容器的學(xué)習(xí),要知道每種容器的實(shí)現(xiàn)原理,每種適合適合解決什么問題的,才是關(guān)鍵
    2013-09-09

最新評論

新巴尔虎右旗| 东丽区| 白沙| 博客| 石河子市| 松桃| 临沂市| 含山县| 湛江市| 阿坝县| 大庆市| 鄂托克旗| 阜平县| 永寿县| 长海县| 原阳县| 东阿县| 娱乐| 尤溪县| 都兰县| 图片| 得荣县| 恩平市| 汾阳市| 益阳市| 吉隆县| 阳高县| 唐河县| 子洲县| 浮山县| 肥乡县| 仙游县| 来凤县| 沈丘县| 喀什市| 顺平县| 宁城县| 台东县| 富锦市| 定边县| 交城县|