C++ 11默认与删除函数
引言
在C++编程中,类通常需要一些特殊的成员函数,如构造函数、析构函数、拷贝构造函数、赋值运算符等。在C++11之前,如果程序员没有显式定义这些函数,编译器会自动生成默认版本。但有时我们可能希望更精确地控制这些函数,这就是C++11引入"默认函数"和"删除函数"特性的原因。
通过这篇文章,你将了解:
- 什么是默认函数(
= default
) - 什么是删除函数(
= delete
) - 如何在实际编程中使用它们
- 这些特性如何帮助你写出更清晰、更安全的代码
默认函数(= default)
什么是默认函数?
在C++中,如果你没有为类定义某些特殊成员函数,编译器会自动生成它们的默认实现。这些特殊成员函数包括:
- 默认构造函数
- 析构函数
- 拷贝构造函数
- 拷贝赋值运算符
- 移动构造函数(C++11新增)
- 移动赋值运算符(C++11新增)
C++11引入的= default
语法允许程序员显式地要求编译器生成这些特殊成员函数的默认版本。