到目前为止,我一直使用了一个接受类型为IArg
的参数的函数,并且我可以按照以下方式处理:
struct IArg
{
};
struct Arg : IArg
{
};
void f (IArg* arg)
{
// do something
}
f(new Arg);
现在当我得到这个时候:
void f (std::shared_ptr<IArg> arg)
{
// do something
}
为什么它再次与之配合起来了?
f(std::make_shared<Arg>());
即使
A
和 B
有关联,std::shared_ptr< A >
和 std::shared_ptr< B >
仍然是不同的类型,对吗?
std::shared_ptr
的副本都需要付费。 - 5gon12eder