文章 2024-06-02 来自:开发者社区

提高安全性,优雅实现拷贝与交换:C++中的Copy-and-Swap惯用法

  概述:拷贝并交换(Copy-and-Swap)是C++编程中的惯用法,用于实现赋值操作符和确保异常安全的拷贝构造函数。其核心思想是通过拷贝构造函数创建临时副本,再通过交换确保操作的异常安全性。这种方法在C++11之前和之后都适用,但在C++11中,移动语义和右值引用的引入使得实现可以更加高效。 拷贝并交换(Copy-and-Swap)是一种C++编程中的惯用法,通常...

文章 2022-02-15 来自:开发者社区

《C++编程惯用法——高级程序员常用方法和技巧》导读

前 言 C++编程惯用法——高级程序员常用方法和技巧C++是一门规模庞大的编程语言。只了解C++规则的程序员就和只知道棋子如何移动的棋手一样(失败)。为了获得成功,还要学习一些相关的法则和策略。 本书所面对的读者是使用C++语言的初级及中级程序员们,他们一方面期待学到更多有关使用这门语言的知识,一方面又没有时间去参加一个大学学期那么长的一门课程。我们假设读者已经了解了一些C++的基础知识——如:....

文章 2022-02-15 来自:开发者社区

《C++编程惯用法——高级程序员常用方法和技巧》——2.11 问题

本节书摘来自异步社区出版社《C++编程惯用法——高级程序员常用方法和技巧》一书中的第2章,第2.11节,作者: 【美】Robert B. Murray ,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.11 问题 1.复制构造函数X::X(X)在C++中是非法的。请解释其原因。 2.我们的String类的构造函数通过调用 new char[strlen(cp)+1]; 来为它的数据...

文章 2022-02-15 来自:开发者社区

《C++编程惯用法——高级程序员常用方法和技巧》——2.10 小结

本节书摘来自异步社区出版社《C++编程惯用法——高级程序员常用方法和技巧》一书中的第2章,第2.10节,作者: 【美】Robert B. Murray ,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.10 小结 判断缺省的复制构造函数和赋值操作符的行为是否符合我们的期望,必要时重新实现它们。避免使用赋值操作来初始化成员;使用构造函数初始化语法来完成初始化操作。当编写赋值操作符时,请.....

文章 2022-02-15 来自:开发者社区

《C++编程惯用法——高级程序员常用方法和技巧》——2.9 静态对象的构造

本节书摘来自异步社区出版社《C++编程惯用法——高级程序员常用方法和技巧》一书中的第2章,第2.9节,作者: 【美】Robert B. Murray ,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.9 静态对象的构造 我们也可以用构造函数来对那些有着static存储类型的对象进行初始化: static String hello("Hello world"); C++编译系统确保:...

文章 2022-02-15 来自:开发者社区

《C++编程惯用法——高级程序员常用方法和技巧》——2.8 返回值为引用

本节书摘来自异步社区出版社《C++编程惯用法——高级程序员常用方法和技巧》一书中的第2章,第2.8节,作者: 【美】Robert B. Murray ,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.8 返回值为引用 函数可以返回一个引用。返回引用和返回指针差不多;被引用的对象在函数返回时必须仍然存在。尤其是,我们不能返回一个自动变量(automatic variable)的引用,其.....

文章 2022-02-15 来自:开发者社区

《C++编程惯用法——高级程序员常用方法和技巧》——2.7 Const

本节书摘来自异步社区出版社《C++编程惯用法——高级程序员常用方法和技巧》一书中的第2章,第2.7节,作者: 【美】Robert B. Murray ,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.7 Const 许多C++程序员在开始使用const时都是用它来定义一些常数;例如将: //C版本: #define BUFF_LENGTH 1024 int buffer[BUFF_L.....

文章 2022-02-15 来自:开发者社区

《C++编程惯用法——高级程序员常用方法和技巧》——2.6 重载、缺省值以及省略符

本节书摘来自异步社区出版社《C++编程惯用法——高级程序员常用方法和技巧》一书中的第2章,第2.6节,作者: 【美】Robert B. Murray ,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.6 重载、缺省值以及省略符 C++中允许用户写出这样的代码:使用不同(个数或类型)的参数来调用(似乎是)同一个函数: f(); f(0); f(x,y,z); (当然,这些函数都应该对...

文章 2022-02-15 来自:开发者社区

《C++编程惯用法——高级程序员常用方法和技巧》——2.5 操作符重载:成员或非成员?

本节书摘来自异步社区出版社《C++编程惯用法——高级程序员常用方法和技巧》一书中的第2章,第2.5节,作者: 【美】Robert B. Murray ,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.5 操作符重载:成员或非成员? 在C++中,对于操作符的重载有着两种方法:将该操作符作为成员函数或者不作为成员函数。在本节中,我们将会对如何为一个特定的操作符选择合适的重载方式给出一些评.....

文章 2022-02-15 来自:开发者社区

《C++编程惯用法——高级程序员常用方法和技巧》——2.4 隐式类型转换

本节书摘来自异步社区出版社《C++编程惯用法——高级程序员常用方法和技巧》一书中的第2章,第2.4节,作者: 【美】Robert B. Murray ,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.4 隐式类型转换 隐式类型转换(详情参见下面的回顾)会使得编译器能够在暗中修改我们所写的代码。由于这个原因,我们必须谨慎地提供和使用它们:人们很难理解那些有着大量隐式类型转换的代码。而且.....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

开发与运维

集结各类场景实战经验,助你开发运维畅行无忧

+关注