簡體   English   中英

何時使用指針對數據成員進行分類?

[英]C++ - When to use pointers to class data members?

我一直在用C ++進行編碼,我想知道是否有人可以為我有時候有時需要指向類成員的指針的一般原因提供幫助,而其他時候卻不需要。

例如,如果我們正在編碼二叉樹

我實現為

class BinaryTree{

    BinaryTree * left;
    BinaryTree * right;
    int val;

    public:
        BinaryTree(int v) {left = NULL; right = NULL; val = v;}
        //implementation of any other neccessary functions
};

我在左側和右側使用BinaryTree指針,因為沒有該指針我們無法做到這一點,因為BinaryTree在該時間點不存在。

還有其他原因嗎? 有沒有辦法解決?

另外,如果我們放置指針成員函數,隱式析構函數將處理它們的刪除嗎?

謝謝你的時間。

這是一個盒子:

一個盒子,在這里代表一個結構

它的體積約為一立方米,因此只能存儲總體積為一立方米的對象。 而且它絕對不能存儲兩個相同的盒子本身。 請注意,這兩個盒子中的每一個還需要包含兩個類似的盒子,依此類推,依此類推。

這是一個struct

struct BinaryTree {
    BinaryTree left;
    BinaryTree right;
    int val;
};

它具有等於sizeof(BinaryTree)的有限大小,因此它只能存儲總大小小於或等於sizeof(BinaryTree) 而且它絕對不能存儲 BinaryTree類型的兩個值。 請注意,這兩個值中的每一個還需要存儲兩個類似的值,依此類推,依此類推。

由於結構實例不能包含同一結構的其他實例,並且我們需要定義它們之間的關系,並且樹肯定是分層的,因此我們在此處使用指針。

注意,所謂的指向T的原始指針(即T* )唯一要做的就是指向T 由於指向是此類指針的唯一任務,因此銷毀不會銷毀指向的對象,而只會銷毀指針

存在一些行為類似於指針的類型,但也執行其他任務,例如管理指向對象的生存期。 這些是C ++ 11的std::unique_ptrstd::shared_ptr等。 我強烈建議使用它們。

對象通常包含僅需要根據運行時條件或參數創建的成員。 您希望盡可能延遲創建。 這是使用指針的常見情況。

暫無
暫無

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

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