【发布时间】:2019-09-28 10:37:02
【问题描述】:
我可以在初始化成员之前初始化指向数据成员的指针吗?换句话说,这是有效的 C++ 吗?
#include <string>
class Klass {
public:
Klass()
: ptr_str{&str}
, str{}
{}
private:
std::string *ptr_str;
std::string str;
};
this 的问题和我的类似,但是那里的顺序是正确的,答案是
我建议不要这样编码,以防有人改变了你班级成员的顺序。
这似乎意味着颠倒订单是非法的,但我不能确定。
【问题讨论】:
-
只是好奇你为什么需要它?
-
@vahancho 我在类的末尾添加了一个私有向量(因此它与接口在物理上是分开的)但是这个向量需要指向一些公共成员的指针。我想知道是否必须将其向上移动,或者这样是否可以。
-
只要确保在会员实际存在之前不要尝试访问它
-
@Ayxan Language-lawyer 的问题可能会给本网站带来有趣的讨论。因此,我建议您再等一会儿,如此迅速地接受第一个答案。虽然它可能是正确的,但其他意见也可能很有价值。
-
@DanielLangr 不错的建议。
标签: c++ pointers initialization language-lawyer