嗨,我想知道做和做有什么区别
template <typename T> class List :
T& getData();
AND
T getData();
};
鉴于这T
是一个类型,T&
是对 type 对象的引用T
。
T getData();
是一个返回类型对象的函数T
。这意味着,无论函数返回什么都将被复制,调用者将收到此副本。这称为“复制返回”。在实践中,并不总是需要生成副本,编译器可以将其优化掉(这称为“复制省略”)。
T& getData();
是一个返回对类型对象的引用的函数T
。这很容易理解,称为“通过引用返回”,意味着返回的对象没有被复制。相反,您只需返回对其在内存中位置的引用,通过该引用可以访问原始对象。使用它时,必须注意返回的引用不会在它所引用的对象的生命周期之外使用。
如果您不确切知道引用是什么,它本质上是一个别名,用于引用某个变量。它通常用作指针的更安全替代方案,尽管与指针不同,它本身不是对象,并且您永远不能引用引用本身,因此不能更改它所引用的内容。
如果您想了解更多信息,维基百科页面非常有用。
T& getData(); returns a reference to T
T getData(); returns a copy of T
什么是 C++ 参考:链接