何时使用派生类指针和基类指针

时间:2011-06-16 08:53:26

标签: c++ visual-c++

任何人都可以帮助我,当我必须使用基类和派生类指针时。

4 个答案:

答案 0 :(得分:1)

这取决于你为什么要派生。如果是OO实现, 大多数情况下,你将使用指向基类的指针(将会 通常是抽象的;你只会使用指向派生的指针 class,如果派生类定义了扩展接口。但 C ++中的继承是一种技术,它经常用于其他技术 目的。 (想想迭代器类,它继承自 实例化std::iterator。这是 not OO派生,并且 你永远不会使用指针作为std::iterator的实例。)

我经常会对OO概念使用“派生”进行区分, 和C ++技术的“继承”。但这绝不是 标准,术语变化很大,所以你通常必须这样做 首先弄清楚作者在谈论什么:OO设计或C ++ 实现。而你有时会意识到他没有 了解自己;他在自己的脑海中混淆了这两个人。遗产 是用于实现OO派生的C ++语言构造,但这是 语言构造可以用于其他事情。

答案 1 :(得分:0)

当您有多个派生类时。并且您在编译时不知道哪个派生类将在运行时实例化。基类指针优先于派生类指针。

答案 2 :(得分:0)

当您想要使用派生类接口时,或者当您想要确保处理基类的这个特定实现时,或者想要调用非虚函数时,请使用派生类指针在派生类中。

在其他情况下,没关系。

答案 3 :(得分:0)

当您有多个派生类但希望从派生类类型中抽象自己时,将使用基类指针。这可能非常有用,例如在以下情况中:

class Animal {
        Animal();
}

class Dog : public Animal {
        Dog();
}

class Cat : public Animal {
        Cat();
}

如您所见,在此示例中,您有一个基类(Animal)和两个派生类(Cat和Dog)。让我们说现在你正在经营一个动物园(只有猫和狗:)),你需要保持你的动物名单。您可以创建两个单独的列表,一个用于Cats,另一个用于Dogs。但是,如果您认为Cats and Dogs只是动物,您可以创建一个包含动物指针的列表。

这样,通过从派生类类型中抽象自己,可以通过使用指向基类的简单指针来处理不同的派生类。

派生类指针完全不同,因为它们只能“表示”派生类类型。