![]() |
1
8
使用智能指针。 这些是不再使用时删除的指针(参见示例 http://www.boost.org/doc/libs/1_43_0/libs/smart_ptr/smart_ptr.htm ) |
![]() |
2
4
还可以按值返回对象。 一些编译器提供 返回值优化 它在返回对象时优化掉副本。
编辑:
通过返回 指向基的指针 混凝土物体保持完好。这个 slicing problem 是避免和原来的 vtbl 指针可用于进行虚拟函数调用。阿尔索 (正如你在评论中提到的) 返回的实例 抽象类 是不可能的。
我建议您不要返回原始指针,
然后这样使用:
|
|
3
2
返回对局部变量的引用。一旦函数返回引用,栈就会弹出,这个bar对象就不存在了。 编辑:我没有读整本书。您可能需要使用智能指针。 实际上,是否有任何理由需要返回基类引用?您可以通过返回具体类型本身的对象来避免任何智能指针混乱,因为C++允许协变返回类型。 |
![]() |
4
1
由于要将返回对象的所有权转移给调用方,调用方将必须销毁该对象。换句话说,归还IBAR*是你最好的选择。如果您担心必须手动调用delete,那么应该考虑使用智能指针包,例如boost::shared_ptr。 |
![]() |
5
1
如果不想删除,那么必须使用智能指针。 在C++中,只有当对象被占用时,才有对象“删除它自己”的唯一方法。 |
![]() |
6
1
移除堆栈时,已在堆栈上创建的对象将被销毁。当函数退出时,堆栈被移除。 相反,尝试以下方法:
|
![]() |
timurichk · 我的类不重写抽象方法compareTo 7 年前 |
![]() |
Steffn · angular 4中抽象类的动态多提供程序 7 年前 |
![]() |
Fabio Piunti · Abstract类子类的调用方法 7 年前 |
![]() |
Sunny Deshmukh · 可以从Java中的多个抽象类继承吗? 7 年前 |
![]() |
Felix · 初始化抽象类的一般变量 7 年前 |
![]() |
wheeeee · Scala对象扩展了抽象类/特征,访问伴随类字段 7 年前 |