就在我以为我能很好地掌握指针的时候,我又感到困惑了。您的见解可能会有所帮助。
我想我可以用非常笼统的术语来说明让我感到困惑的地方,例如:
a) 如果我写A* p = new A()
;(A
某个类在哪里),然后做类似的事情(*p).do_stuff()
,那么指向的对象p
可能会在内存中移动,那么为什么还要p
指向我的对象呢?
b) 类和类的成员变量如何存储在内存中。
但也许我更具体地告诉你我遇到的问题更有用。假设我有一个Car
具有成员变量的类Engine engine_;
(Engine
其他类在哪里)。美好的。现在假设由于某种原因我想创建一个类,该类有一个成员变量,该成员变量是指向 a 的指针Engine
,例如:
class Car
{
friend Repair;
public:
Car() {engine_ = Engine();}
private:
Engine engine_;
};
class Repair
{
public:
Repair(const Car &car) : engine_(&(car.engine_)) {}
private:
Engine *engine_;
};
没有机会repair.engine_
总是指向我汽车的引擎,有吗(?)但即使在第二个版本中:
class Car
{
friend Repair;
public:
Car() {engine_ = new Engine();}
~Car() {delete engine_;}
private:
Engine *engine_;
};
// Maybe I need/should write consts somewhere, not sure
class Repair
{
public:
Repair(const Car &car) : engine_(car.engine_) {}
private:
Engine *engine_;
};
尽管这似乎更有可能奏效,但我不知道/理解它是否会......
提前感谢您的回答!