0
我對模板的使用經驗並不豐富,而且我在我的團隊代碼中發現了一些讓我感到困惑的用法。這些shared_ptr實例之間的區別?
比方說,我有以下兩種類型定義爲shared_ptr的一個基類:
class Foo
{
virtual ~Foo();
virtual void bar() = 0;
};
typedef boost::shared_ptr<Foo> FooPtr1; //this is what i'm used to seeing
typedef boost::shared_ptr<class Foo> FooPtr2; //this is in our codebase
有這些類型定義的有什麼區別?它與派生類的使用有關嗎?
我相信這個實例是相同的。 – lisyarus
也許還有另外一個'Foo'不是'class'(一個'struct'或'union',或者甚至一個'const some_type Foo = ...')代碼試圖消除歧義...... – twalberg
@ twalberg:由於['class'和'struct'可互換](http://coliru.stacked-crooked.com/a/8782dfe1587948f2)在這種情況下,這甚至沒有幫助。如果你不顧一切地立即出錯[如果'Foo'是'union'](http://coliru.stacked-crooked.com/a/d723de0b4e9bc4e8)或值,但是,是的。 –