C++ 面试题 目录

C++11 中 default 和 delete 关键字的作用是什么?

推荐答案

在C++11中,defaultdelete关键字用于控制类的特殊成员函数的生成和删除。

  • default:用于显式地要求编译器生成默认的特殊成员函数(如默认构造函数、拷贝构造函数、拷贝赋值运算符等)。即使类中有其他用户定义的构造函数,使用default仍然可以生成默认的特殊成员函数。

  • delete:用于显式地删除某个特殊成员函数或普通函数,使得该函数不可被调用。通常用于禁止某些不希望被使用的操作(如拷贝构造函数、拷贝赋值运算符等)。

本题详细解读

default 关键字

在C++11之前,如果类中定义了任何构造函数,编译器将不会自动生成默认构造函数。为了保留默认构造函数的行为,C++11引入了default关键字。使用default可以显式地要求编译器生成默认的特殊成员函数。

例如:

在这个例子中,尽管类中定义了带参数的构造函数,但通过使用MyClass() = default;,编译器仍然会生成默认构造函数。

delete 关键字

delete关键字用于显式地删除某个函数,使得该函数不可被调用。这通常用于禁止某些不希望被使用的操作,例如禁止拷贝构造函数或拷贝赋值运算符。

例如:

在这个例子中,NonCopyable类的拷贝构造函数和拷贝赋值运算符被显式删除,因此任何尝试拷贝NonCopyable对象的操作都会导致编译错误。

总结

  • default关键字用于显式生成默认的特殊成员函数。
  • delete关键字用于显式删除某个函数,使其不可被调用。

这两个关键字在C++11中提供了更精细的控制,使得开发者能够更好地管理类的行为。

纠错
反馈