亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++構造函數有何特殊類型

c++
小樊
82
2024-11-09 00:26:35
欄目: 編程語言

C++構造函數是一種特殊的成員函數,用于初始化對象的狀態

  1. 默認構造函數:當沒有為類定義任何構造函數時,編譯器會自動生成一個默認構造函數。默認構造函數不接受任何參數,并且不執行任何操作。如果類中沒有數據成員,那么默認構造函數什么也不做。
class MyClass {
    // 編譯器將自動生成一個默認構造函數
};
  1. 參數化構造函數:這種構造函數接受一個或多個參數,用于初始化類的數據成員。可以有多個參數化構造函數,它們具有不同的參數列表。這種情況下,編譯器不會自動生成默認構造函數。
class MyClass {
public:
    int x;
    int y;

    MyClass(int a, int b) {
        x = a;
        y = b;
    }
};
  1. 拷貝構造函數:這種構造函數用于初始化一個對象,將其初始化為另一個同類型對象的副本。拷貝構造函數接受一個同類型對象的引用作為參數。
class MyClass {
public:
    int x;
    int y;

    MyClass(const MyClass& other) {
        x = other.x;
        y = other.y;
    }
};
  1. 拷貝賦值運算符:這種運算符用于將一個對象賦值給另一個同類型對象。拷貝賦值運算符接受一個同類型對象的引用作為參數。
class MyClass {
public:
    int x;
    int y;

    MyClass& operator=(const MyClass& other) {
        if (this != &other) {
            x = other.x;
            y = other.y;
        }
        return *this;
    }
};
  1. 移動構造函數:這種構造函數用于初始化一個對象,將其初始化為另一個同類型對象的右值引用。移動構造函數接受一個同類型對象的右值引用作為參數。
class MyClass {
public:
    int x;
    int y;

    MyClass(MyClass&& other) noexcept {
        x = other.x;
        y = other.y;
        other.x = 0;
        other.y = 0;
    }
};
  1. 移動賦值運算符:這種運算符用于將一個對象賦值給另一個同類型對象的右值引用。移動賦值運算符接受一個同類型對象的右值引用作為參數。
class MyClass {
public:
    int x;
    int y;

    MyClass& operator=(MyClass&& other) noexcept {
        if (this != &other) {
            x = other.x;
            y = other.y;
            other.x = 0;
            other.y = 0;
        }
        return *this;
    }
};

這些特殊類型的構造函數在對象創建時自動調用,以確保對象以正確的狀態初始化。

0
蓬溪县| 比如县| 繁峙县| 曲沃县| 得荣县| 耒阳市| 繁昌县| 郴州市| 青龙| 古蔺县| 铅山县| 博野县| 长泰县| 龙游县| 海城市| 灵川县| 婺源县| 梁河县| 唐海县| 乌拉特中旗| 长沙市| 环江| 曲阳县| 皮山县| 定西市| 张家口市| 漠河县| 郧西县| 玛多县| 万山特区| 天全县| 房产| 镇雄县| 泸水县| 巴青县| 黑龙江省| 兖州市| 江达县| 奉新县| 体育| 辰溪县|