簡體   English   中英

以下c ++代碼的語法是什么?

[英]What's the syntax of following c++ code?

在下面的c ++代碼中, LinkedList<Derived>::的目的是什么? 我從來沒有看到這種語法。

template<class Derived, class List> LinkedListItem<Derived, List>::~LinkedListItem() {
    if(_list) _list->LinkedList<Derived>::cut(static_cast<Derived*>(this));
}

我在詢問之前嘗試搜索,但卻找不到任何東西。 對不起,如果已有帖子。

假設您有兩個班級:

struct A
{
   virtual void foo() {std::cout << "Came to A::foo()\n";}
};

struct B : A
{
   virtual void foo() {std::cout << "Came to B::foo()\n";}
};

和一個指針:

A* ap = new B();

如果你打電話

ap->foo();

您將執行B::foo() 但是,如果要在該指針上執行A::foo() ,可以使用:

ap->A::foo();

來到你發布的代碼,

如果添加一些空格並將內容放在多行中,則相同的代碼為:

template<class Derived, class List>
LinkedListItem<Derived, List>::~LinkedListItem()
{
    if(_list) 
        _list->LinkedList<Derived>::cut(static_cast<Derived*>(this));
}

這條線

template<class Derived, class List>

表示我們正在查看類模板,類模板成員函數或函數模板。

這條線

LinkedListItem<Derived, List>::~LinkedListItem()

表示我們正在查看類模板LinkedListItem的析構函數。

線條

    if(_list) 
        _list->LinkedList<Derived>::cut(static_cast<Derived*>(this));

表明LinkedListItem有一個成員變量_list 如果成員變量_list不是NULL,我們就會調用它上面的一些函數。

這條線

        _list->LinkedList<Derived>::cut(static_cast<Derived*>(this));

似乎表明_list的類型有一個名為LinkedList的基類模板,它有一個名為cut的成員函數。 該行使用通過將this轉換為Derived*獲得的參數來調用該函數。

LinkedList<Derived>是一種類型,它也是一個scope ::是作用域操作符,它告訴編譯器它所在的cut(static_cast<Derived*>(this))范圍cut(static_cast<Derived*>(this)) (LinkedList)。

以下是可能的結構: LinkedList<Derived>是實現Derived對象的鏈接列表的模板類。 它由LinkedListItem<Derived, List>對象組成,它們包圍Derived*並維護與鏈表相關的其他數據組件(下一個,prev指針,頭指針等)。 每個LinkedListItem<Derived,List>對象還包含指向它所屬的LinkedList<Derived>對象的指針。 這是_list 因此,當您銷毀LinkedListItem ,您還希望cut其從原始列表中cut cut可能會修改要刪除的LinkedListItem的鄰居的內容,以便維護所有LinkedList不變量。

LinkedList<Derived> in _list->LinkedList<Derived>::cut(static_cast<Derived*>(this)); 表示函數cut屬於LinkedList<Derived>模板,您可以通過范圍運算符注意到::

暫無
暫無

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

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