首页 > TAG信息列表 > copy-constructor

C#将所有对象参数复制到子类对象

假设我有一个不能更改的父类的对象-例如,带有长参数列表的ListBox实例.现在,我创建一个子类: class PlaylistBox : ListBox { void CopySettingsFrom(ListBox In) { //...what now? } } 问题-如何有效地从In对象向PlaylistBox的新对象进行浅表复制?解决方法:

c-即使提供了精确参数,也将忽略显式副本构造函数

提供了副本构造函数.使用它时,会将完全相同的类型传递给参数.仍然似乎编译器(gcc / g 4.8.2)忽略了显式副本构造函数的存在. 该代码生成编译错误.为什么?错误是: t.cpp: In function ‘A f(const A&)’: t.cpp:19:12: error: no matching function for call to ‘A::A(const A&)’

c-如果它们具有私有副本构造函数,为什么不能初始化对象数组?

在执行C项目时,我遇到了一些意外的和令人沮丧的行为.我的实际代码有点复杂,但是以下示例也将其捕获: class Irritating { public: Irritating() {} private: Irritating(const Irritating& other) {} }; const Irritating singleton; // Works just fine.

java-副本构造函数创建依赖副本

我实现了here所描述的副本构造函数.但是仍然存在的问题是,当我更新route_copy时,会将相同的更新应用于route.所以,我不明白我的代码有什么问题? public class Route implements Comparable<Route> { private List<Site> sites; public Route() { sites = new

c-查找“无法访问在类’QObject’中声明的私有成员”的根本原因

我知道为什么会收到C2248:’QObject :: QObject’:无法访问类’QObject’中声明的私有成员. Qt对象不可复制,如下所述: > https://stackoverflow.com/a/3513395/356726 > No copy constructor or assignment operator 问题是,编译器消息始终指示该类的最后一行(结束}): class MyQObjec

为什么向量保持类类型会在push_back()时再调用复制构造函数一次?

我有以下代码: #include <iostream> using std::cin; using std::cout; using std::endl; #include <vector> using std::vector; class Quote { public: Quote() = default; Quote(const std::string &book, double sales_price):

java复制构造函数和继承

经过一番搜索,我没有找到有关复制构造函数和继承的任何好答案. 我有两个班:用户和学员.受训者从User继承,并且两个String参数被添加到受训者.现在,我设法制作了User的副本构造函数,但对Trainee的副本构造函数不满意.用户复制构造函数的代码如下: public User (User clone) { thi

c push_back,非const复制构造函数

我有一个班,我想推回到一个双端队列.问题是,当我推回时,我需要更改原始对象,因此我需要一个非const复制ctor.现在,如果我实现我的const复制ctor被调用.如果我删除了常量,我得到一个关于没有可用的ctors的编译错误.我如何实现这一点,我可以修改原始结构,当我传入它?我需要修改它bc当

c – 为什么编译器需要复制构造函数,需要并且移动一个并且不使用它们中的任何一个?

我已经尝试过问这个问题,但我还不够清楚.所以这是另一个尝试.我对我的英语很抱歉;) 我们来看看代码: #include <iostream> #include <memory> using namespace std; struct A { unique_ptr<int> ref; void printRef() { if (ref.get()) cout<<"i="<

c – 如何在派生类中声明复制构造函数,而不在基础中使用默认的construcor?

请看下面的例子: class Base { protected: int m_nValue; public: Base(int nValue) : m_nValue(nValue) { } const char* GetName() { return "Base"; } int GetValue() { return m_nValue; } }; class Derived: public Base { publi

c – 我可以将指针传递给超类,但是可以创建一个子类的副本吗?

我有一个函数,它获取指向超类的指针并对其执行操作.但是,在某些时候,该函数必须对输入的对象进行深度复制.有什么方法可以执行这样的副本吗? 在我看来,让函数成为模板函数,只是让用户传递类型,但我希望C提供更优雅的解决方案.解决方法:SpaceCowboy提出了惯用的克隆方法,但忽略了3个

c – 如何从派生类复制构造函数中调用基类复制构造函数?

参见英文答案 > Why aren’t copy constructors “chained” like default constructors or destructors?                                    3个 >            Calling the base class constructor from the derived class con

c – 复制列表初始化是否从概念上调用了复制ctor?

在C 11之前,我们可以通过写A a = 1之类的东西进行复制初始化.这或多或少等于A a = A(1);也就是说,首先创建临时,然后调用复制ctor.无论版本是否复制,这必须是概念上的,并且必须可以访问复制文件. 通过C 11中的列表初始化,我们可以通过写A a = {1,2};来进行复制列表初始化.在我看来,

使用默认复制构造函数的C vector :: push_back

我有一个类(Uniform),它有一个带2个参数的构造函数和一个默认的复制构造函数(它只包含int,float,std :: vector和std :: map).我创造了一个 std::vector<Uniform> uniforms 我想填写使用 uniforms.push_back() 线.我使用此代码来执行此操作(第二行仅用于测试复制构造函数,因为

Python:浅层和深层复制构造函数的实现

在大多数情况下,在C中实现复制构造函数(或重载赋值运算符)很容易,因为有一个指针的概念.但是,我对如何在Python中实现浅层和深层复制感到困惑. 我知道其中一个库中有特殊命令,但它们不适用于您自己编写的类.那么实施的常用方法有哪些? 附:在一些基本数据结构(链表或树)上显示进程将不

c – 派生QT类的复制构造函数

我有一个公开继承自QWidget的类: class MyWidget : public QWidget { Q_OBJECT public: MyWidget(const MyWidget& other) : obj1(other.obj1), obj2(other.obj2) private: some_class obj1; some_class obj2; }; 当我构建我的项目时,编译器抱怨:

c – 为什么在此代码中没有调用复制构造函数

那么为什么不在“const Integer operator(const Integer& rv)”函数中调用Copy构造函数.是因为RVO.如果是,我需要做些什么来防止它? #include <iostream> using namespace std; class Integer { int i; public: Integer(int ii = 0) : i(ii) { cout << "Integer

C编译器错误C2280“尝试引用已删除的函数”在Visual Studio 2013和2015中

在Visual Studio 2013(版本12.0.31101.00 Update 4)中编译此代码段时没有错误 class A { public: A(){} A(A &&){} }; int main(int, char*) { A a; new A(a); return 0; } 虽然它在Visual Studio 2015 RC(版本14.0.22823.1 D14REL)中使用此错误进行编译: 1>----

c – 不继承复制构造函数

我有以下代码: class C { public: C(int) {} C(const C&) {} C() {} }; class D : public C { public: using C::C; }; int main() { C c; D d_from_c(c); // does not compile, copy ctor is not inherited D d_from_int(1); // compiles,

c – 什么是复制和交换习语?

这个成语是什么,什么时候应该使用?它解决了哪些问题?当使用C 11时,习语会改变吗? 虽然在许多地方已经提到过,但我们没有任何单一的“它是什么”问题和答案,所以在这里.以下是前面提到的地方的部分列表: > What are your favorite C++ Coding Style idioms: Copy-swap > Copy construct

C构造函数调用顺序

当我初始化我的类的对象时,默认和复制构造函数都被调用. class A { public: A (string s) { str = string (s); cout << "default" << endl; } A (int n) { cout << "A (int n)" << endl; } A (string s, int n) { cout << "A (strin

c – 何时提供用户定义的复制构造函数和赋值运算符?

当我们有指针数据成员时,我们只需要编写一个复制构造函数和赋值运算符(因为否则当编译器生成的复制文件执行浅拷贝时,两个指针可能指向同一个对象)? 如果我们的所有数据成员都分配在堆栈上,我们可以依赖编译器定义的复制构造函数和赋值运算符吗?解决方法:指针无疑是最明显的情况,但并

在C中为LinkedList类创建复制构造函数时寻求帮助

首先,我意识到StackOverflow上有很多关于此的主题.我在理解其中一些答案时遇到了一些麻烦.我正在创造这个,希望有人能帮助我理解这个过程. 如果这个问题看起来比较新手我很抱歉,但我正在尽力去理解它. 我正在学习数据结构,并被要求根据提供的标头创建LinkedList实现文件. 这是家庭

c – 如何在地图中放置一个“删除”复制ctor和赋值运算符的类?

因为我在一个不太完整的C 11编译器(VS 11)上,我收到一个关于防止使用复制ctor赋值运算符的链接器错误.一切都是花花公子,但问题是我不能把我的类放在一个std :: map中,其中key是uin32_t,value是我的类.我甚至试过安慰,但它不起作用. 我在想std ::将unique_ptr移动到地图中,但是不想

c – 禁止复制构造函数,但允许其他类型的隐式复制

这是我的代码,我禁用了复制构造函数,但它也禁用了其他类型的隐式副本.在这种情况下的任何解决方法? 测试:g(GCC)4.7.1 struct item { int b; }; class test { public: test(const test& copy) = delete; test(const item& a) { std::cout << "OK " << a.b << std::endl