任何人都可以帮助我,当我必须使用基类和dervied类指针。何时使用派生类指针和基类指针
1
A
回答
0
当您有多个派生类。而且在编译时你不知道哪个派生类将在运行时实例化。基类指针优于派生类指针。
0
当你想要使用派生类接口,或者当你想确保你正在处理这个特定的基类实现,或者当你想调用一个非虚函数时,使用派生类指针在派生类中定义。
在其他情况下,没关系。
1
这取决于你为什么得到。如果它是用于OO实现的,大多数情况下,您将使用指向基类的指针( 通常通过抽象);如果派生类定义扩展接口,则只会使用派生类 的指针。但C++中的继承是一种技术,并且它经常用于其他 的目的。 (想想一个迭代器类,它从 实例化std::iterator
继承的,这是不OO派生和 you'ld从未使用指针的std::iterator
的实例。)
我会经常使区分,使用OO概念的“推导”,对C++技术使用“继承”。但这绝不是标准,术语差别很大,所以你通常必须先找出作者正在谈论的内容:OO设计或C++ 实现。而且有时你会意识到自己并不知道他自己;他在自己的想法中混淆了两者。继承 是用于实现面向对象派生的C++语言结构,但是这种语言结构可以用于其他事情。
0
当您有多个派生类但您想从派生类类型中抽象出自己时,将使用基类指针。这可以在这样的情况下是例如非常有用:
class Animal {
Animal();
}
class Dog : public Animal {
Dog();
}
class Cat : public Animal {
Cat();
}
正如你看到的,在这个例子中,你有一个基类(动物)和两个派生类(猫和犬)。现在让我们说你正在运行一个动物园(只有猫和狗:)),并且你需要保留一个动物列表。你可以创建两个单独的列表,一个用于猫,另一个用于狗。然而,如果你认为猫和狗只是动物,你可以创建一个指向动物的列表。
这样,通过从派生类类型中抽象出自己,可以通过指向基类的简单指针来处理不同的派生类。
派生类指针是完全不同的,因为它们只能“表示”派生类的类型。
相关问题
- 1. 派生类和基类之间指针指针的转换?
- 2. C++ dynamic_cast基类指向派生类指针的指针
- 3. 将指针基类转换为指向派生类的指针
- 4. 将基类指针转换为未知的派生类指针
- 5. C++派生类的剧组成员指针到基类指针
- 6. 在目标c中指派派生类的基类指针
- 7. 我不能从指针指向派生类的指针和指向基类的指针吗?
- 8. 通过基指针获取派生类?
- 9. 如何调用通过基类指针基类方法指向派生类
- 10. 使用派生类分配基类指针的内存
- 11. 为什么使用派生类的基类指针
- 12. 如何派生类指针可以调用基类函数
- 13. 基类指针vs继承类指针?
- 14. D指针/ pimpl模式基类指针访问派生类成员
- 15. C++删除派生类被分配给所述基类的指针的指针
- 16. 通过指针到基类的指针到派生类对象操作对象
- 17. 从基类指针访问派生类函数时出错
- 18. 如何停止分配派生类对象的基类指针
- 19. 对派生类指针的基类引用
- 20. 指向派生类对象的基指针的值
- 21. 如何将一个指向派生类的指针传递给期望引用基类指针的函数?
- 22. 派生指针只能添加方法时将基指针转换为派生指针的有效性
- 23. 使用基类指针删除派生类时的内存泄漏
- 24. C++ - 通过智能指针派生类
- 25. 访问派生类通过指针
- 26. 过程指针,派生类型
- 27. 传递派生类的指针回调
- 28. 从基类指针访问派生类成员
- 29. 试图派生类对象的地址赋给基类指针
- 30. C++访问派生类从基类指针
Way.Too.Broad。如果您在理解这些问题时遇到问题,请在代码示例中澄清。 – Xeo 2011-06-16 10:45:08