【发布时间】:2013-11-08 16:34:34
【问题描述】:
我不知道我是否设法描述了我在标题中的意思,但说我们有一个像这样的数据类:
class Data
{
public:
Data(int i) : m_data(i) {} // Must always be initialized with a value
int m_data;
};
还有一个像这样的 Main 类:
class Main
{
public:
Main() :
m_data(Set(&m_data)) // Is it ok to use the pointer of m_data like this?
{
}
private:
int Set(Data* pData)
{
m_pData = pData;
return 10;
}
Data* m_pData;
Data m_data; //Must be initialized in the initializer list of the constructor
};
我的问题是:
在实际初始化 m_data 之前,我可以安全地将 &m_data 作为指向 Set 函数的指针吗? (假设 Set 函数中不使用指针,仅存储)
IE; &m_data 指针在 m_data 本身初始化之前是否有效?
【问题讨论】:
-
为什么不在需要的时候使用 &m_data?
-
@MadScienceDreams 显然这是不必要的复杂而不是“生产”代码。我只是想知道它是否合法:)
标签: c++ pointers initializer-list