首页 >后端开发 >C++ >C 函数声明中的'=delete”是什么意思?

C 函数声明中的'=delete”是什么意思?

Barbara Streisand
Barbara Streisand原创
2024-11-22 19:59:16459浏览

What does

理解函数声明中“=delete”的含义

在 C 11 中,“=delete”语法用于删除功能,有效防止其使用。它通常用于禁止复制或限制某些转换。

删除复制构造函数和赋值运算符

也许“=删除”最常见的用例是禁止复制。例如,如果我们有一个名为“my_class”的类,我们不想被复制,我们可以声明:

class my_class
{
public:
    ...
    my_class(const my_class &) = delete;
    ...
};

此声明可防止编译器为“生成默认的复制构造函数和赋值运算符” my_class."

防止不需要的转换

“=”的另一种用法delete”是为了禁止特定的类型转换。例如,如果我们有一个类“Z”,我们只想从“long long”值构造,我们可以使用“=删除”来防止较小类型的转换:

struct Z
{
public:
    ...

    Z(long long);     // can initialize with a long long      
    Z(long) = delete; // but not anything less
};

其他函数修饰符

除了“= 0”(将函数设置为纯虚拟)和“= delete”(删除function),C 中没有其他函数修饰符。但是,其他关键字(例如“override”和“final”)可用于修改虚函数的行为。

以上是C 函数声明中的'=delete”是什么意思?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn