小编ill*_*cal的帖子

C++ - 使用指针作为数据字段复制构造函数

我有以下代码: -

#include <iostream>
using namespace std;

class A { 
    int *val;
public:
    A() { val = new int; *val = 0; }
    int get() { return ++(*val); } 
};

int main() {
    A a,b = a;

    A c,d = c;

    cout << a.get() << b.get() ;
    cout << endl ; 

    cout << c.get() << endl ;//
    cout << d.get() << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它产生的输出为: -

21
1
2
Run Code Online (Sandbox Code Playgroud)

在c.get和d.get的情况下的行为很容易理解.c和d共享相同的指针val,a和b共享相同的指针val.

所以c.get()应该返回1而d.get()应该返回2.但我期望在a.get()和b.get()中有类似的行为.(也许我还没有正确理解cout)

我无法理解a.get()是如何产生2的.

你能解释一下为什么我会得到这样的输出.据我说,输出应该是: -

12
1
2
Run Code Online (Sandbox Code Playgroud)

c++ pointers class-constructors

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

标签 统计

c++ ×1

class-constructors ×1

pointers ×1