c++11 默认函数

ChannelRack() = default;

✅ 它的正式名称是:默认函数(Defaulted Function)

更具体地,这是 C++11 标准中引入的一个特性,叫做:

🔹 显式默认构造函数(Explicitly Defaulted Constructor)


📘 语法说明

cpp
 
class ChannelRack { public: ChannelRack() = default; // 默认构造函数被显式地请求生成 };
  • ChannelRack() 是类的构造函数。
  • = default; 表示使用编译器自动生成的默认实现。

🧱 这属于 C++ 的哪一类语言特性?

它属于 特殊成员函数控制(Special Member Function Control) 的一部分,和 = delete 搭配使用。

特性关键字用途
显式要求编译器生成默认实现 = default 让编译器为构造函数、析构函数、拷贝/移动操作等生成默认代码
禁止使用某些函数 = delete 阻止调用特定函数(比如禁用拷贝构造)

📚 示例对比:= default 和普通构造函数

1. 普通手动写的构造函数:

cpp
 
class MyClass { public: MyClass() { // 手动初始化代码 x = 0; } private: int x; };

2. 使用 = default 的构造函数:

cpp
 
class MyClass { public: MyClass() = default; // 编译器自动帮你写一个“什么都不做”的构造函数 };

🎯 适用场景总结

场景是否需要 = default
自定义了带参数的构造函数,但仍想保留无参构造函数 ✅ 需要
想让编译器自动合成构造函数 ✅ 可以用
类中没有特别资源管理需求(如内存、文件句柄等) ✅ 推荐使用
不希望用户创建对象实例 ❌ 应该使用 = delete

🧠 小贴士:哪些函数可以 = default

以下 6 种特殊成员函数都可以使用 = default

函数类型示例
默认构造函数 MyClass() = default;
拷贝构造函数 MyClass(const MyClass&) = default;
移动构造函数 MyClass(MyClass&&) = default;
赋值运算符 MyClass& operator=(const MyClass&) = default;
移动赋值运算符 MyClass& operator=(MyClass&&) = default;
析构函数 ~MyClass() = default;

📝 总结一句话:

ChannelRack() = default; 是 C++ 中的一种 显式默认构造函数语法,用于告诉编译器:“请帮我生成这个函数的标准版本”。

如果你是 C++ 新手,记住这几点就够了:

  • = default 是让编译器自动生成默认行为。
  • 它不会执行任何额外代码。
  • 当你自己写了别的构造函数时,加 = default 可以保留默认构造函数。

如需进一步学习,我可以为你提供完整的小例子练习 😊

posted on 2025-06-03 17:05  小沙盒工作室  阅读(29)  评论(0)    收藏  举报