问题 我们可以在构造函数中使用'this'指针[duplicate]


可能重复:
C ++在构造函数中使用此指针 

像标题一样,我可以做类似下面的代码吗?

class A;

class B {
public:
    B(A* p);
    ...
};

class A {
    B m;
public:
    A():m(this){}
    ~A(){}
};

3494
2017-08-22 10:28


起源

可能重复:将this指针传递给成员的c'tor或将this指针传递给不同的线程有所不同。在第一种情况下,可以很容易地控制何时第一次访问正在构造的对象,对于第二种情况,它至少是完全简单的。 - Torsten Robitzki


答案:


是的,您可以传递指向当前正在构建的对象的指针。但是你必须记住,对象还没有完全构建。所以B基本上可以做的就是存储指针供以后使用。

经常使用它的一个例子是std :: stream和流缓冲区。


10
2017-08-22 10:33