簡體   English   中英

C ++ 11:如何使用nullptr初始化某個類的指針數組?

[英]C++11: How to initialize array of pointers of some class with nullptr?

我是C ++的新手。 我有一個名為MyDate類。 另外,我有一個名為Calendar的類,該類具有指向MyDate對象的指針數組的成員類型。 我應該如何在Calendar的構造函數中將數組的成員聲明並初始化為nullptr

就個人而言,我可能會這樣做:

class Calendar {

/* Methods: */

    Calendar() noexcept
    { for (auto & ptr: m_dates) ptr = nullptr; }

/* Fields: */

    /* Array of 42 unique pointers to MyDate objects: */
    std::array<MyDate *, 42> m_dates;

};

PS:您可能要考慮使用諸如std::unique_ptrstd::shared_ptr類的智能指針,而不是原始指針。 然后,您根本不需要在Calendar構造函數中顯式初始化它們:

class Calendar {

/* Fields: */

    /* Array of 42 pointers to MyDate objects: */
    std::array<std::unique_ptr<MyDate>, 42> m_dates;

};

編輯:沒有C ++ 11功能,我會這樣做:

class Calendar {

/* Methods: */

    Calendar()
    { for (std::size_t i = 0u; i < 42u; ++i) m_dates[i] = NULL; }

/* Fields: */

    /* Array of 42 unique pointers to MyDate objects: */
    MyDate * m_dates[42];

};

智能指針默認初始化為nullptr

class Calendar
{
    std::array<std::unique_ptr<Date>, 42> m_dates;
};

否則, std::array是一個聚合,因此空的初始化列表將對所有標量字段進行零初始化:

class Calendar
{
    std::array<Date *, 42> m_dates {};
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM