亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解C++何時(shí)需要拷貝構(gòu)造函數(shù)

 更新時(shí)間:2023年09月11日 08:48:46   作者:高陽(yáng)言編程  
拷貝構(gòu)造函數(shù)是一個(gè)特殊的構(gòu)造函數(shù),用于創(chuàng)建一個(gè)新對(duì)象,該對(duì)象與另一個(gè)同類對(duì)象具有相同的屬性和值,在 C++ 中,拷貝構(gòu)造函數(shù)通常采用另一個(gè)同類對(duì)象作為參數(shù),并使用該對(duì)象初始化新對(duì)象,本文給大家講講何時(shí)需要拷貝函數(shù),需要的朋友可以參考下

何時(shí)需要拷貝函數(shù)?

下面我們看一段代碼?

#include <iostream>
using namespace std;
class Line
{
  public:
    string m_name;
    int m_age;
    Line();
    ~Line(); // 析構(gòu)函數(shù)
    void show();
};
Line:: Line()
{
  cout << "無參構(gòu)造被調(diào)用" << endl;
}
Line:: ~Line()
{
  cout << "析構(gòu)函數(shù)~Line()被調(diào)用" << endl;
}
void Line:: show()
{
  cout << "姓名:" << m_name << ",年齡: " << m_age << endl;
}
int main()
{
  Line line1("張三", 18);
  Line line2 = line1;
  return 0;
}

這時(shí)候編譯,會(huì)提示你

已經(jīng)告訴你答案了。

拷貝構(gòu)造函數(shù)的規(guī)則

拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),它在創(chuàng)建對(duì)象時(shí),是使用同一類中之前創(chuàng)建的對(duì)象來初始化新創(chuàng)建的對(duì)象。

  • 用一個(gè)已存在的對(duì)象創(chuàng)建新的對(duì)象,不會(huì)調(diào)用(普通)構(gòu)造函數(shù),而是調(diào)用拷貝構(gòu)造函數(shù)。

  • 如果類中沒有定義拷貝構(gòu)造函數(shù),編譯器將提供一個(gè)拷貝構(gòu)造函數(shù),它的功能是把已存在對(duì)象的成員變量賦值給新的對(duì)象的成員變量。

  • 用一個(gè)已存在的對(duì)象創(chuàng)建新的對(duì)象語(yǔ)法:

    • 類名 新對(duì)象名(已存在的對(duì)象名)

    Line line1("張三", 18);

    Line line2(line1);

    • 類名 新對(duì)象名 = 已存在的對(duì)象名。

    Line line1("張三", 18);

    Line line2 = line1;

拷貝構(gòu)造函數(shù)的寫法

classname (const classname &obj) 
{ 
    // 構(gòu)造函數(shù)的主體 
}

接下來把上面的例子補(bǔ)齊

#include <iostream>
using namespace std;
class Line
{
  public:
    string m_name;
    int m_age;
    Line();
    Line(string name, int age);  // 構(gòu)造函數(shù)
    Line(const Line &obj);
    Line(const Line &obj, int n);
    ~Line(); // 析構(gòu)函數(shù)
    void show();
};
Line:: Line()
{
  cout << "無參構(gòu)造被調(diào)用" << endl;
}
Line:: Line(string name, int age)
{
  m_name = name;
  m_age = age;
  cout << "構(gòu)造函數(shù)Line(string name1, int age)被調(diào)用" << endl;
}
Line:: Line(const Line &obj)
{
  cout << "拷貝構(gòu)造函數(shù)被調(diào)用" << endl;
  cout << "拷貝構(gòu)造 - 姓名:" << obj.m_name << ",拷貝構(gòu)造 - 年齡: " << obj.m_age << endl;
  m_name = obj.m_name;
  m_age = obj.m_age;
}
Line:: ~Line()
{
  cout << "析構(gòu)函數(shù)~Line()被調(diào)用" << endl;
}
// 實(shí)現(xiàn)成員函數(shù)
void Line:: show()
{
  cout << "姓名:" << m_name << ",年齡: " << m_age << endl;
}
int main()
{
  Line line1("張三", 18);
  Line line2 = line1;
  line2.show();
  return 0;
}

執(zhí)行結(jié)果如下:

到此這篇關(guān)于詳解C++何時(shí)需要拷貝構(gòu)造函數(shù)的文章就介紹到這了,更多相關(guān)c++ 拷貝構(gòu)造函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VC++6.0實(shí)現(xiàn)直線掃描轉(zhuǎn)換的圖文教程

    VC++6.0實(shí)現(xiàn)直線掃描轉(zhuǎn)換的圖文教程

    這篇文章主要給大家介紹了關(guān)于VC++6.0實(shí)現(xiàn)直線掃描轉(zhuǎn)換的相關(guān)資料,文中通過圖文將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用VC++6.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 基于VC中使用ForceInclude來強(qiáng)制包含stdafx.h的解決方法

    基于VC中使用ForceInclude來強(qiáng)制包含stdafx.h的解決方法

    本篇文章是對(duì)VC中使用ForceInclude來強(qiáng)制包含stdafx.h的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • ipv6實(shí)現(xiàn)tcp編程示例

    ipv6實(shí)現(xiàn)tcp編程示例

    這篇文章主要介紹了ipv6實(shí)現(xiàn)tcp編程示例,需要的朋友可以參考下
    2014-03-03
  • C++ 命名空間詳解

    C++ 命名空間詳解

    這篇文章主要介紹了C++ 命名空間的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • C語(yǔ)言趣味編程之平分七筐魚

    C語(yǔ)言趣味編程之平分七筐魚

    這篇文章介紹了C語(yǔ)言趣味編程之平分七筐魚,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • C++中浮點(diǎn)數(shù)、double類型如何與0值作比較詳解

    C++中浮點(diǎn)數(shù)、double類型如何與0值作比較詳解

    浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)機(jī)制和整型數(shù)不同,其有舍入誤差,在計(jì)算機(jī)中用近似表示任意某個(gè)實(shí)數(shù),這篇文章主要介紹了C++中浮點(diǎn)數(shù)、double類型如何與0值作比較的相關(guān)資料,需要的朋友可以參考下
    2025-03-03
  • C++訪問者模式模板函數(shù)無法重載的問題解決

    C++訪問者模式模板函數(shù)無法重載的問題解決

    本文主要介紹了C++訪問者模式模板函數(shù)無法重載的問題解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • OpenCV實(shí)現(xiàn)車牌定位(C++)

    OpenCV實(shí)現(xiàn)車牌定位(C++)

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)車牌定位,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++入門概覽和嘗試創(chuàng)建第一個(gè)C++程序

    C++入門概覽和嘗試創(chuàng)建第一個(gè)C++程序

    這篇文章主要介紹了C++入門概覽和嘗試創(chuàng)建第一個(gè)C++程序,同時(shí)也包括編寫類的示例展示C++面向?qū)ο蟮奶匦?需要的朋友可以參考下
    2015-09-09
  • C++11中初始化列表initializer lists的使用方法

    C++11中初始化列表initializer lists的使用方法

    C++11引入了初始化列表來初始化變量和對(duì)象,自定義類型,如果想用初始化列表就要包含initializer_list頭文件
    2021-09-09

最新評(píng)論