我们可以在构造函数中使用'this'指针吗?

12

可能是重复问题:
C++使用构造函数中的this指针

就像标题所说,我能够使用以下代码吗?

class A;

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

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

可能重复:将此指针传递给成员的构造函数或将此指针传递给不同线程之间存在差异。在第一种情况下,可以轻松控制首次访问正在构建的对象的时间,而在第二种情况下,这至少并不简单。 - Torsten Robitzki
1个回答

11

是的,你可以传递一个指向当前正在构造的对象的指针。但是你必须记住,该对象尚未完全构造完成。因此,B类在其构造函数中可以做的基本上就是将指针存储以供以后使用。

这种情况经常用于std::stream和stream buffer之间的示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接