C++ 空类中的默认成员函数详解
在 C++ 中,一个空类(即没有成员变量和成员函数的类)会自动拥有以下默认成员:
-
默认构造函数(Default Constructor):如果没有显式定义构造函数,编译器将自动生成一个默认构造函数。默认构造函数没有参数,它会执行默认的初始化操作。
-
默认析构函数(Destructor):如果没有显式定义析构函数,编译器将自动生成一个默认析构函数。默认析构函数会在对象被销毁时自动调用,执行清理操作。
-
拷贝构造函数(Copy Constructor):如果没有显式定义拷贝构造函数,编译器将自动生成一个默认的拷贝构造函数。拷贝构造函数用于创建一个新对象,并将其初始化为已存在对象的副本。
-
拷贝赋值运算符(Copy Assignment Operator):如果没有显式定义拷贝赋值运算符,编译器将自动生成一个默认的拷贝赋值运算符。拷贝赋值运算符用于将已存在对象的值赋给另一个对象。
-
移动构造函数(Move Constructor):如果没有显式定义移动构造函数,编译器将自动生成一个默认的移动构造函数。移动构造函数用于将右值对象的资源所有权转移给新对象。
-
移动赋值运算符(Move Assignment Operator):如果没有显式定义移动赋值运算符,编译器将自动生成一个默认的移动赋值运算符。移动赋值运算符用于将右值对象的资源所有权转移给另一个对象。
请注意,如果显式定义了任何一个上述成员函数,编译器将不会自动生成对应的默认成员函数。因此,如果需要使用默认成员函数,可以通过声明为 default 来显式要求编译器生成默认版本。例如:'ClassName() = default;' 表示生成默认构造函数。
原文地址: https://www.cveoy.top/t/topic/pcVA 著作权归作者所有。请勿转载和采集!