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

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

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

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

下面我們看一段代碼?

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

這時候編譯,會提示你

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

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

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

  • 用一個已存在的對象創(chuàng)建新的對象,不會調用(普通)構造函數(shù),而是調用拷貝構造函數(shù)。

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

  • 用一個已存在的對象創(chuàng)建新的對象語法:

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

    Line line1("張三", 18);

    Line line2(line1);

    • 類名 新對象名 = 已存在的對象名。

    Line line1("張三", 18);

    Line line2 = line1;

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

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

接下來把上面的例子補齊

#include <iostream>
using namespace std;
class Line
{
  public:
    string m_name;
    int m_age;
    Line();
    Line(string name, int age);  // 構造函數(shù)
    Line(const Line &obj);
    Line(const Line &obj, int n);
    ~Line(); // 析構函數(shù)
    void show();
};
Line:: Line()
{
  cout << "無參構造被調用" << endl;
}
Line:: Line(string name, int age)
{
  m_name = name;
  m_age = age;
  cout << "構造函數(shù)Line(string name1, int age)被調用" << endl;
}
Line:: Line(const Line &obj)
{
  cout << "拷貝構造函數(shù)被調用" << endl;
  cout << "拷貝構造 - 姓名:" << obj.m_name << ",拷貝構造 - 年齡: " << obj.m_age << endl;
  m_name = obj.m_name;
  m_age = obj.m_age;
}
Line:: ~Line()
{
  cout << "析構函數(shù)~Line()被調用" << endl;
}
// 實現(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í)行結果如下:

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

相關文章

  • C++數(shù)據(jù)結構分析多態(tài)的實現(xiàn)與原理及抽象類

    C++數(shù)據(jù)結構分析多態(tài)的實現(xiàn)與原理及抽象類

    繼承就是可以直接使用前輩的屬性和方法。自然界如果沒有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作
    2022-02-02
  • C++如何實現(xiàn)DNS域名解析

    C++如何實現(xiàn)DNS域名解析

    這片文章介紹了C++如何實現(xiàn)DNS域名解析,還有對相關技術的介紹,代碼很詳細,需要的朋友可以參考下
    2015-07-07
  • C++中構造函數(shù)與析構函數(shù)的調用順序詳解

    C++中構造函數(shù)與析構函數(shù)的調用順序詳解

    C++ 語言一直被批評太復雜了,很多細節(jié)的地方需要仔細推敲,甚至其構造函數(shù)和析構的調用順序也成為了一個讓人迷惑的問題,在此我做了簡單的總結。這篇文章主要介紹了C++中構造函數(shù)與析構函數(shù)的調用順序,需要的朋友可以參考借鑒。
    2017-01-01
  • VS2019安裝cbd調試器的實現(xiàn)步驟

    VS2019安裝cbd調試器的實現(xiàn)步驟

    本文主要介紹了VS2019安裝cbd調試器的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-12-12
  • C++?socket通信遇到的問題及解決方法

    C++?socket通信遇到的問題及解決方法

    這篇文章主要介紹了C++?socket通信遇到的問題,通過代碼修改來解決這個問題,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • C語言實現(xiàn)一個文件版動態(tài)通訊錄流程詳解

    C語言實現(xiàn)一個文件版動態(tài)通訊錄流程詳解

    這篇文章主要介紹了C語言實現(xiàn)一個文件版動態(tài)通訊錄流程,希望大家能從這篇文章中收獲到許多,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • C++構造函數(shù)拋出異常需要注意的地方

    C++構造函數(shù)拋出異常需要注意的地方

    這篇文章主要介紹了C++構造函數(shù)拋出異常需要注意的地方,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下
    2020-08-08
  • C++ string 類原理、踩坑與對象語義詳解

    C++ string 類原理、踩坑與對象語義詳解

    本文給大家介紹C++ string 類原理、踩坑與對象語義詳解,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2026-05-05
  • C++詳細實現(xiàn)完整圖書管理功能

    C++詳細實現(xiàn)完整圖書管理功能

    隨著網(wǎng)絡技術的高速發(fā)展,計算機應用的普及,利用計算機對圖書館的日常工作進行管理勢在必行,本篇文章涵蓋一個圖書管理系統(tǒng)的全部實現(xiàn)代碼,大家可以查缺補漏,提升水平
    2022-05-05
  • C++中sizeof運算符全面詳解和代碼示例

    C++中sizeof運算符全面詳解和代碼示例

    sizeof是C++中的一個編譯時運算符,用于獲取對象或類型所占的字節(jié)數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-07-07

最新評論

普定县| 榆中县| 巴中市| 大英县| 丹东市| 隆子县| 普陀区| 文登市| 沾化县| 丹寨县| 桑植县| 昌宁县| 蓝田县| 镇康县| 珠海市| 寿宁县| 当阳市| 县级市| 全椒县| 宿州市| 阜康市| 二连浩特市| 云浮市| 梨树县| 襄汾县| 凤山市| 丰台区| 贵港市| 海宁市| 集贤县| 罗城| 成都市| 神池县| 灵山县| 翼城县| 防城港市| 闵行区| 龙州县| 永寿县| 友谊县| 嘉祥县|