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)或值,但是,是的。 –