草庐IT

copy-constructor

全部标签

c++ - 我如何允许移动构造并禁止类的赋值和复制构造

有没有办法允许移动构造函数并禁止复制构造和赋值。我可以想到几个具有文件指针和缓冲区指针(资源句柄等)的类,它们将受益于复制构造和分配。我正在使用VC2010和GCC4.5.2。我知道我必须在VC2010类header中声明空的私有(private)赋值和复制构造函数,据我所知,GCC允许在方法之后执行某种删除签名来执行相同的操作。如果有人有像这样的骨架类的好例子及其优点,我将不胜感激。提前致谢约翰这里是一个类的例子,我想允许移动但我也想阻止直接分配。复制构造函数和operator=private是不是同样的问题?classLoadLumScanner_v8002:publicILoad

c++ - 将私有(private)复制构造函数与公共(public)赋值运算符一起使用时出错

你们谁能解释一下为什么下面这段代码不能编译?#includeusingnamespacestd;classFoo{public:Foo(){cout我收到的错误:$g++-ocopy_ctor_assigncopy_ctor_assign.cc&&./copy_ctor_assigncopy_ctor_assign.cc:Infunction'intmain()':copy_ctor_assign.cc:10:error:'Foo::Foo(constFoo&)'isprivatecopy_ctor_assign.cc:17:error:withinthiscontext注意:当我删除

c++ - 未调用复制构造函数,但编译器提示没有

给定以下代码:#includeenumError{ERR_OK=0};structFilter:privateboost::noncopyable{Filter(){}virtual~Filter(){}virtualintfilter(int*data)const=0;};structSpecialFilter:publicFilter,privateboost::noncopyable{inlineSpecialFilter(unsignedintmin,unsignedintmax):min(min),max(max){}virtual~SpecialFilter(){}virt

c++ - 多重继承类的复制构造函数

考虑这段代码:#include#includeusingnamespacestd;classBase{char_type;public:Base(chartype):_type(type){}~Base(){coutv;Baseb('b');Childc;v.push_back(b);v.push_back(c);return0;}我系统的输出是:Basedestructor:bChilddestructorBasedestructor:cBasedestructor:bBasedestructor:bBasedestructor:c我的问题是:为什么Base(b类型)的析构函数被调用

C++11 虚拟拷贝构造函数

我正在阅读MarkJoshi的C++设计模式和衍生产品定价,并在C++11中实现他的代码。一切都进行得很顺利,直到我看到他讨论虚拟拷贝构造函数的第4章。PayOffDoubleDigitalthePayOff(Low,Up);VanillaOptiontheOption(thePayOff,Expiry);这里的问题是VanillaOption包含对thePayOff的引用。如果是这种情况并且有人修改了thePayOff,则theOption的行为可能会被无意中修改。他建议的解决方案是在PayOffDoubleDigital的基类PayOff中创建一个虚拟拷贝构造函数,以便theOpt

c++ - C++菱形继承(钻石问题)中如何调用所有基类的拷贝构造函数来拷贝大部分派(dispatch)生类对象?

考虑下面的代码:#includeusingnamespacestd;classA{public:A(){cout程序的输出如下:13571358因此,对于行Dd(d1)D的拷贝构造函数正在调用类。在继承过程中,我们需要显式调用基类的复制构造函数,否则只会调用基类的默认构造函数。到这里我才明白。我的问题:现在我想在Dd(d1)期间调用所有基类的复制构造函数执行。为此,如果我在下面尝试D(constD&obj):A(obj),B(obj),C(obj){cout然后我得到这个错误:错误:'classAA::A'isinaccessiblewithinthiscontext如何解决这个问题。

c++ - 如何实现类似 std::copy_if 但在插入到不同容器之前应用函数的方法

完全公开,这可能是一个锤子和钉子的情况,在不需要的时候尝试使用STL算法。我在我正在使用的一些C++14代码中看到了一个重新出现的模式。我们有一个迭代的容器,如果当前元素符合某些条件,那么我们将其中一个元素字段复制到另一个容器。模式是这样的:for(autoit=std::begin(foo);it!=std::end(foo);++it){autox=it->Some_member;//Note,thecheckusuallyusesthefieldwouldaddtothenewcontainer.if(f(x)&&g(x)){bar.emplace_back(x);}}这个想法几

c++ - 复制构造函数以转移 unique_ptr 的所有权

我需要编写一个复制构造函数,它还转移被复制对象的unique_ptr成员的所有权。情况如下:classC{//Cclassstuff};classA{public:publicA();publicA(constA&a);private:std::unique_ptrc_;}classB{public:B(constA&b):a_(a){}private:Aa_;};我应该如何为A实现复制构造函数? 最佳答案 我猜你的意图或方法是错误的。复制构造函数旨在创建参数的拷贝,但由于unique_ptr保持唯一所有权,因此无法复制它。实际上,

c++ - 如何在 boost::filesystem 中使用 copy_file?

我想将一个文件从一个目录复制到另一个目录,但我的程序总是因为某些原因而中止。之前有没有人这样做过,可以告诉我哪里出了问题吗?我怎么能捕捉到copy_file抛出的异常,我查看了boost网站,但我找不到任何关于异常的相关信息。pathuser_path("C:\\MyFolder");boost::filesystem::create_directory(user_path);pathfile("C:\\Another\\file.txt");boost::filesystem::copy_file(file,user_path);谢谢, 最佳答案

c++ - 在 C++ 中初始化变量的偏好

开始使用C++并注意到您可以通过两种方式初始化变量intexample_var=3;//withtheassignmentoperator'='或intexample_var(3);//enclosingthevaluewithparentheses是否有理由使用一个而不是另一个? 最佳答案 第一种形式可以追溯到C时代,而第二种形式是在C++中添加的。添加的原因是在某些上下文中(特别是构造函数中的初始化列表)不允许使用第一种形式。这两者并不完全等同于所有类型,这就是其中一个或另一个可能更有用的地方。第一种形式在语义上意味着从右侧创建