=delete用法
在C++11及以后的版本中,= delete 是一个特殊的语法,用于明确地删除某个成员函数(包括构造函数、析构函数、赋值操作符、特殊成员函数等)的默认实现。当某个成员函数被声明为 = delete,则这个成员函数变得不可用,如果你试图使用它,编译器将给出一个错误。
class A
{
public:
void Foo() const
{
printf("A::Foo()\r\n");
}
void Foo2() const
{
printf("A::Foo2()\r\n");
}
};
class B : public A
{
public:
void Foo() const = delete;
};
int _tmain(int argc, _TCHAR* argv[])
{
B b;
// b.Foo(); //ERROR
b.Foo2();
return 0;
}
| 用法场景 | 语法示例 | 作用 |
| 内存释放 | delete ptr; | 释放动态分配的内存 |
| 删除函数 | void func() = delete; | 禁止函数被调用 |
| 禁用构造 | MyClass() = delete; | 阻止类的实例化 |
| 模板特化 | template<> void f<char*>() = delete; | 禁用特定模板实例 |
| 虚函数限制 | virtual void vf() = delete; | 禁止基类接口调用 |
浙公网安备 33010602011771号