草庐IT

copy-constructor

全部标签

c++ - 有条件的? : operator with class constructor

谁能解释一下为什么c和c1的构造方式不同。我知道我引用了由“?”创建的拷贝运算符,在构造后被销毁,但为什么在第一种情况下它的行为方式不同。我已经测试了它是否优化,但即使从控制台读取条件,我也有相同的结果。提前致谢#includeclassfoo{public:foo(conststd::vector&var):var{var}{};conststd::vector&var;};std::vectorf(){std::vectorx{1,2,3,4,5};returnx;};intmain(){std::vectorx1{1,2,3,4,5,7};std::vectorx2{1,2,3,

c++ - 节省内存的 C++ 字符串(interning、ropes、copy-on-write 等)

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我的应用程序存在内存问题,包括复制大量字符串、使用与大量哈希表中的键相同的字符串等。我正在为我的字符串寻找一个基类,以使其非常高效。我希望:字符串实习(相同值的多个字符串使用相同的内存),写时复制(我认为这在几乎所有std::string实现中都是免费的),带有绳索的东西将是一个奖励(对于O(1)-ish连接)。我的平台是Linux上的g++(但这不太重要

c++ - 节省内存的 C++ 字符串(interning、ropes、copy-on-write 等)

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我的应用程序存在内存问题,包括复制大量字符串、使用与大量哈希表中的键相同的字符串等。我正在为我的字符串寻找一个基类,以使其非常高效。我希望:字符串实习(相同值的多个字符串使用相同的内存),写时复制(我认为这在几乎所有std::string实现中都是免费的),带有绳索的东西将是一个奖励(对于O(1)-ish连接)。我的平台是Linux上的g++(但这不太重要

c++ - C 和 C++ 静态链接 : just a copy?

当有人静态链接一个.lib时,链接器会将lib的全部内容复制到最终的可执行文件中还是只复制目标文件中使用的函数? 最佳答案 整个图书馆?--没有。只是你调用的函数?--没有。还有别的吗?--是的。它肯定不会扔到整个库中。但它也不一定只包括“目标文件中使用的函数”。链接器将创建一个递归构建的列表,列出库中的哪些对象模块满足您的undefinedsymbol。然后,它将包含这些对象模块中的每一个。通常,一个给定的对象模块将包含多个函数,如果其中一些没有被您做调用的函数调用,您将获得一些函数(和数据对象))你不需要的。

c++ - C 和 C++ 静态链接 : just a copy?

当有人静态链接一个.lib时,链接器会将lib的全部内容复制到最终的可执行文件中还是只复制目标文件中使用的函数? 最佳答案 整个图书馆?--没有。只是你调用的函数?--没有。还有别的吗?--是的。它肯定不会扔到整个库中。但它也不一定只包括“目标文件中使用的函数”。链接器将创建一个递归构建的列表,列出库中的哪些对象模块满足您的undefinedsymbol。然后,它将包含这些对象模块中的每一个。通常,一个给定的对象模块将包含多个函数,如果其中一些没有被您做调用的函数调用,您将获得一些函数(和数据对象))你不需要的。

c++ - 什么时候 copy-and-swap 习语不适用

看完this关于我读过的copy-and-swap习语this在(2)下说:class_name&class_name::operator=(constclass_name&)(2)(2)Typicaldeclarationofacopyassignmentoperatorwhencopy-and-swapidiomcannotbeused我们什么时候应该避免使用copy-and-swap习语?什么时候它完全“不能使用”?是否存在copy-and-swap和零规则都不适用的现实案例?我确实找到了question但它过于具体,没有包括任何关于如何识别此类案例的指南。

c++ - 什么时候 copy-and-swap 习语不适用

看完this关于我读过的copy-and-swap习语this在(2)下说:class_name&class_name::operator=(constclass_name&)(2)(2)Typicaldeclarationofacopyassignmentoperatorwhencopy-and-swapidiomcannotbeused我们什么时候应该避免使用copy-and-swap习语?什么时候它完全“不能使用”?是否存在copy-and-swap和零规则都不适用的现实案例?我确实找到了question但它过于具体,没有包括任何关于如何识别此类案例的指南。

c++ - 在 vector <unique_ptr> 上使用 is_copy_constructible 误报

类型trait是否应该能够处理std::vector>之类的情况?并检测到它不是可复制的?这是https://ideone.com/gbcRUa的示例(运行g++4.8.1)#include#include#include#includeintmain(){//Thisprints1,implyingthatit'scopyconstructible,whenit'sclearlynotstd::cout>>::value如果这是is_copy_constructible的正确行为,有没有办法检测到复制结构是不正确的?好吧,不仅仅是让它无法编译。 最佳答案

c++ - 在 vector <unique_ptr> 上使用 is_copy_constructible 误报

类型trait是否应该能够处理std::vector>之类的情况?并检测到它不是可复制的?这是https://ideone.com/gbcRUa的示例(运行g++4.8.1)#include#include#include#includeintmain(){//Thisprints1,implyingthatit'scopyconstructible,whenit'sclearlynotstd::cout>>::value如果这是is_copy_constructible的正确行为,有没有办法检测到复制结构是不正确的?好吧,不仅仅是让它无法编译。 最佳答案

c++ - 从复制构造函数调用默认赋值运算符是不好的形式吗?

考虑一个需要复制的类。拷贝中的绝大多数数据元素必须严格反射(reflect)原始数据,但是只有少数元素的状态不需要保留,需要重新初始化。从复制构造函数调用默认赋值运算符是不是不好的形式?默认的赋值运算符可以很好地处理普通旧数据(int、double、char、short)以及用户定义的每个赋值运算符的类。指针需要单独处理。一个缺点是,由于没有执行额外的重新初始化,这种方法会使赋值运算符失效。也不可能禁用赋值运算符,因此打开了用户使用不完整的默认赋值运算符Aobj1,obj2;创建损坏类的选项;对象2=对象1;/*结果可能是一个错误初始化的obj2*/.最好放宽对a(orig.a),b(