草庐IT

copy-constructor

全部标签

c++ - 为什么 std::copy(从 istream 到 ostream)会引发 ios::failure 异常?

以下代码应将数据从wifstream复制到wcout。复制内容后,程序抛出ios::failure异常。#include#include#include#include#include#include#includeintmain(void){std::locale::global(std::locale(""));std::wifstreamis;is.exceptions(std::ios::failbit|std::ios::badbit);is.open("test.ts",std::ios::binary);is>>std::noskipws;std::istream_ite

c++ - std::copy_n 是否适用于重叠范围?

我正在查看N348525.3.1[alg.copy]中的C++标准,它定义了4种算法:复制copy_backwardcopy_ifcopy_n在copy的描述中,有这个注释25.3.1[alg.copy]/3:Requires:resultshallnotbeintherange[first,last)也就是说,当范围重叠时,copy并不总是正确工作(类似于memcpy)。copy_backward和copy_if有相似的语言禁止重叠范围(分别为25.3.1[alg.copy]/14和25.3.1[alg.copy]/8).但是copy_n没有这样的禁止,也没有copy_n_backw

c++ - has_trivial_default_constructor 是如何工作的?

谁能给我解释一下has_trivial_default_constructor是如何工作的?我试图在提升实现中找到它,但不幸的是宏太多,我迷路了......如何使用模板检测C++中的trivial_default_constructor?我需要一个C++03而非11的示例。#include#includestructA{A(){}inta;//std::vectorb;};intmain(intargc,char*argv[]){structB{std::vectorb;};boolresult=boost::has_trivial_default_constructor::value

c++ - 复制构造函数被隐式删除,因为默认定义的格式不正确

我有一个A类(来self无法控制的库),它有一个私有(private)复制构造函数和一个clone方法,还有一个类B派生自A。我也想为B实现clone。天真的方法#includeclassA{//Ihavenocontrolherepublic:A(inta){};std::shared_ptrclone()const{returnstd::shared_ptr(newA(*this));}private:A(constA&a){};};classB:publicA{public:B(intdata,intextraData):A(data),extraData_(extraData)

c++ - 为什么在声明 move 操作时删除复制操作?

当类显式声明复制操作(即复制构造函数或复制赋值运算符)时,不会为该类声明move操作。但是当一个类显式声明一个move操作时,复制操作被声明为删除。为什么会存在这种不对称?为什么不直接指定如果声明了move操作,就不会声明复制操作?据我所知,不会有任何行为差异,也不需要对move和复制操作进行不对称处理。[对于喜欢引用标准的人来说,12.8/9和12.8/20中规定了有复制操作声明的类缺少move操作声明,有move操作声明的类有删除复制操作的规定在12.8/7和12.8/18中。] 最佳答案 当要move一个类但由于没有声明mov

模板类上的 C++ 模板复制构造函数

我有一个模板类,它有一个模板复制构造函数。问题是当我使用具有相同模板类型的此类的另一个实例实例化此类时,不会调用我的模板复制构造函数。为什么不匹配?这是代码片段:#includetemplateclassMyTemplateClass{public:MyTemplateClass(){std::cout&other){std::coutMyTemplateClass(constMyTemplateClass&other){std::coutinstance;MyTemplateClassinstance2(instance);returnEXIT_SUCCESS;}输出是default

c++ - 错误 : base class 'A1' has private copy constructor

在windows平台上使用Clang3.7见以下代码:classA1{public:A1(char*name){}virtual~A1(){}private:A1(constA1&){}};classB1:publicA1{public:B1():A1(""){}};我收到以下错误:MyFile(31):8:error:baseclass'A1'hasprivatecopyconstructorB1():A1(""){}^MyFile(25):2:note:declaredprivatehereA1(constA1&){}^公开A1复制构造函数,消除错误!这里发生了什么?注意:通过改变

c++ - 如何使用 std::copy 读取任意数量的值?

我正在尝试编写与此相反的操作:std::ostreamouts;//properlyinitializedofcoursestd::setmy_set;//dittoouts(outs));应该是这样的:std::istreamins;std::set::size_typesize;ins>>size;std::copy(std::istream_iterator(ins),std::istream_iterator(ins)???,std::inserter(my_set,my_set.end()));但我坚持使用“结束”迭代器——输入交互器不能使用std::advance并且我也不

C++:默认复制构造函数是否受到其他构造函数和析构函数的影响?

Asweknow,如果声明了任何构造函数(包括复制构造函数),则不会隐式创建默认构造函数(不带参数的构造函数)。默认复制构造函数(执行对象的浅拷贝的构造函数)是否也会发生同样的情况?另外,析构函数的存在是否会对此产生影响? 最佳答案 12.8#4复制类对象Iftheclassdefinitiondoesnotexplicitlydeclareacopyconstructor,oneisdeclaredimplicitly析构函数没有任何作用 关于C++:默认复制构造函数是否受到其他构造函

c++ - 为什么在超出容量时 resize() 会导致 vector 内容的复制而不是 move ?

这个问题在这里已经有了答案:Howtoenforcemovesemanticswhenavectorgrows?(3个答案)关闭9年前。下面给定类X(明确定义的特殊成员函数与本实验无关):structX{X(){}X(int){}X(Xconst&){std::cout以下程序创建了一个类型为X的对象vector,并调整它的大小以超出其容量并强制重新分配:#include#includeintmain(){std::vectorv(5);v.resize(v.capacity()+1);}由于X类提供了move构造函数,我希望vector的先前内容在重新分配后被move到新存储中。令人