c++ - 复制和指针

标签 c++ pointers copy

我对复制分配和指针有疑问。

我举个例子:

class Abc 
{      
public:
  Abc() { q = new Qwe;}
  Qwe* GetQwe() { return q; }

private:

  Qwe* q;
};

Abc* a = new Abc();
Qwe* aux = a->GetQwe();
aux->Modify();

我不知道当我调用 GetQwe 时,它​​返回的是 q 值的拷贝,但不在与 q 相同的内存位置。

所以我的问题是,来自 Abc 的 q 会被修改吗?

最佳答案

So my question is, would the q from Abc be modified?

No q 本身不会被修改,GetQwe() 将返回指针的拷贝,该指针仍指向与 q 相同的内存位置, 但 qaux 指向的对象是相同的,可以通过 Modify() 调用进行修改。此外,您还需要在调用其成员函数之前初始化 Abc::q

关于c++ - 复制和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16187973/

相关文章:

c++ - 带有模板的头文件中出现 "not declared in scope"错误

c++ - 在 std::move() 之后删除堆上的结构成员

c++ - 派生类和基类之间指针到指针的转换?

c++ - 复制构造函数 - C++

objective-c - 具有在 getter 中返回对象副本并在 setter 中保留对象的属性

c++ - 为什么在插入 map 时出现段错误?

c++ - Qt:槽返回值的含义?

c - 使用带有指针的比较运算符来检查它是否在地址范围内?

C 程序在 Debug模式下工作,在 Release模式下不工作

gcc - 用特定值填充向量 (SSE2) 的最快方法。模板友好