C++11 标准新特性:Defaulted 和 Deleted 函数
2021/6/18 17:27:35
本文主要是介绍C++11 标准新特性:Defaulted 和 Deleted 函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C++11 标准新特性:Defaulted 和 Deleted 函数 (转)
C++ 的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。
=default
程序员只需在函数声明后加上“=default;
”,就可将该函数声明为 defaulted 函数,编译器将为显式声明的 defaulted 函数自动生成函数体。例如:
class X{ public: X()=default; X(int i){ a = i; } private: int a; }; X x;
编译器会自动生成默认构造函数X::X(){}
,该函数可以比用户自己定义的默认构造函数获得更高的代码效率。
=delete
程序员只需在函数声明后加上“=delete;
”,就可将该函数禁用。
虽然只显式的禁用了一个拷贝构造函数和一个拷贝赋值操作符,但是由于编译器检测到类X
存在用户自定义的拷贝构造函数和拷贝赋值操作符的声明,所以不会再隐式的生成其它参数类型的拷贝构造函数或拷贝赋值操作符,也就相当于类X
没有任何拷贝构造函数和拷贝赋值操作符,所以对象间的拷贝和赋值被完全禁止了。
class X{ public: X(); X(const X&) = delete; // 声明拷贝构造函数为 deleted 函数 X& operator = (const X &) = delete; // 声明拷贝赋值操作符为 deleted 函数 }; int main(){ X x1; X x2=x1; // 错误,拷贝构造函数被禁用 X x3; x3=x1; // 错误,拷贝赋值操作符被禁用 }
这篇关于C++11 标准新特性:Defaulted 和 Deleted 函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享