相关疑难解决方法(0)

赋值运算符和复制构造函数之间有什么区别?

我不明白C++中赋值构造函数和复制构造函数之间的区别.它是这样的:

class A {
public:
    A() {
        cout << "A::A()" << endl;
    }
};

// The copy constructor
A a = b;

// The assignment constructor
A c;
c = a;

// Is it right?
Run Code Online (Sandbox Code Playgroud)

我想知道如何分配赋值构造函数和复制构造函数的内存?

c++ memory

95
推荐指数
5
解决办法
7万
查看次数

复制和直接初始化的动机背后的动机是什么?

为什么调用复制构造函数而不是转换构造函数有点相关

初始化,直接和复制初始化有两种语法:

A a(b);
A a = b;
Run Code Online (Sandbox Code Playgroud)

我想知道他们有不同定义行为的动机.对于复制初始化,涉及额外的副本,我不能想到该副本的任何目的.由于它是来自临时文件的副本,它可以并且可能会被优化,因此用户不能依赖它发生 - 因为额外的副本本身不足以应对不同的行为.所以为什么?

c++ history language-design initialization

43
推荐指数
1
解决办法
1885
查看次数

int a = 0和int a(0)差异

可能重复:
复制初始化和直接初始化之间的C++是否存在差异?

我刚开始学习C++.

为了用值初始化变量,我遇到了

int a = 0;
Run Code Online (Sandbox Code Playgroud)

int a(0);
Run Code Online (Sandbox Code Playgroud)

这让我很困惑.我可以知道哪种方法最好吗?

c++

37
推荐指数
4
解决办法
1万
查看次数

C++对象实例化与分配

这有什么区别:

TestClass t;
Run Code Online (Sandbox Code Playgroud)

还有这个:

TestClass t = TestClass();
Run Code Online (Sandbox Code Playgroud)

我希望第二个可能会调用构造函数两次然后调用operator =,而是调用构造函数一次,就像第一次一样.

c++ constructor default-constructor copy-assignment

12
推荐指数
1
解决办法
8072
查看次数

这是一个复制构造函数吗?

class A {};
class B { public: B (A a) {} };

A a;
B b=a;
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这是一个复制构造函数在这里应用的创建b

c++

3
推荐指数
2
解决办法
488
查看次数

C++ operator =问题

我有一个MyPoly类,我实现了自己的相等运算符(=).当我尝试这个代码一切正常,我的实现=被调用.

MyPoly mp = MyPoly(arr , 4); 

MyPoly copy;
copy = mp;
Run Code Online (Sandbox Code Playgroud)

但是当我写这个:

MyPoly mp = MyPoly(arr , 4); 

MyPoly copy = mp;
Run Code Online (Sandbox Code Playgroud)

它不使用我的implements =,然后当调用析构函数时,我得到一个运行时错误.

有人能解释为什么这些代码不同吗?

c++ operators

1
推荐指数
1
解决办法
139
查看次数