我不知道我是否设法描述了我在标题中的含义,但是说我们有一个类数据如下:
class Data
{
public:
Data(int i) : m_data(i) {} // Must always be initialized with a value
int m_data;
};
像这样的主类:
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函数中使用,仅存储)
即;在m_data本身被初始化之前,& m_data指针是否有效?
答案 0 :(得分:1)
在实际初始化
&m_data
之前,我可以安全地将Set
作为指向m_data
函数的指针吗?
当然,你可以这样做:从指针读取到内存被写入至少一次是违法的,但指针本身可以安全存储。