1

我不知道我是否设法描述了标题中的意思,但说我们有一个像这样的数据类:

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 函数中使用,仅存储)
即;&m_data 指针在 m_data 本身初始化之前是否有效?

4

1 回答 1

1

在实际初始化之前,我可以安全地给出&m_data指向函数的指针吗?Setm_data

绝对可以这样做:在内存至少被写入一次之前从指针读取是非法的,但指针本身可以安全存储。

于 2013-11-08T16:36:33.280 回答