专业编程基础技术教程

网站首页 > 基础教程 正文

C++类的默认成员函数 c++类中定义的成员默认访问属性为( )

ccvgpt 2024-10-12 13:51:45 基础教程 7 ℃

对于刚接触C++的同学,定义一个类时需要小心编译器默认提供的成员函数,防止出现非预期的情况。

对于一个空类,

C++类的默认成员函数 c++类中定义的成员默认访问属性为( )

class Student {
}

等价于:

class Student {
public:
Student(); // 缺省构造函数
Student(const Student& stu); // 拷贝构造函数
~Student(); // 缺省析构函数
Student& operator=(const Student& stu); // 赋值运算符
Student* operator&(); // 取址运算符
const Student* operator&() const; // 取址运算符(const版本)
}

对于编译器自动生成的默认成员函数,需要注意以下几点:

  1. 如果类中没有显式定义构造函数,编译器会自动生成一个无参的构造函数;
  2. 一个类可以有多个构造函数,但有且只有一个析构函数;
  3. 析构函数没有参数,没有返回值,缺省的析构函数什么也不操作;
  4. 析构函数在对象生命周期结束后,编译器自动调用析构函数,完成对象的资源清理工作。因此,如果类中涉及资源的管理(有动态申请的内存),析构函数一定要显式给出;
  5. 拷贝构造函数只有单个形参,该形参是对本类类型对象的引用(且必须用const修饰),系统默认生成的拷贝构造函数为浅拷贝,若涉及资源管理的问题,一定要显示定义拷贝构造函数;
  6. 系统默认生成的赋值运算符,也是按照浅拷贝的方式进行赋值,因此若涉及资源管理的问题,一定要重载赋值运算符;
  7. 取址运算符通常不需要重载。

最近发表
标签列表