C++泛型程序设计和多态

泛型程序设计

当一个程序需要一个基类对象时,可以提供一个派生类的对象。我们称之为泛型程序设计。这种设计使得一个函数能适应更大的范围的对象实参,变得更加通用。

用我们前面说到的例子来讲,假如有一个函数displayGeometricObject()可以传入GeometricObject类的对象:

void displayGeometricObject(const GeometricObject& g) {
    //在控制台打印对象g的描述信息
    cout << g.toString() << endl;
}

我们声明三个对象:

GeometricObject g;
Circle c;
Rectangle r;

那么这个三个类都可以当做displayGeometricObject函数的参数传入:

displayGeometricObject(g);
displayGeometricObject(c);
displayGeometricObject(r);

其实这很容易理解:我说我想要一个几何图形,但是没有具体的说是什么图形。那么你可以给我一个圆,也可以给我一个矩形,但是你不能够给我一个苹果,因为它不是几何图形。而且你也不能给我一个几何图形,因为几何图形是抽象的,你没有办法拿出来。水果也是抽象的,你只能拿出苹果、香蕉、梨等具体的水果,但是没有办法直接拿出一个水果。

我们运行上面的程序会发现最终的结果是:

(GeometricObject类的toString方法返回字符串"Geometry Object")

(Circle类的toString方法返回字符串"Circle Object")

(Rectangle类的toString方法返回字符串"Rectangle Object")

C++泛型程序设计和多态

(前面打印了三句“我是一个几何图形”是因为GeometricObject类的构造函数中有"cout << "我是一个几何图形" << endl;"语句,每次子类或父类创建对象时候都要调用)

最终显示出三行"Geometry Object",而不是我们预期的:

Geometry Object
Circle Object
Rectangle Object

这是因为它直接调用了GeometryObject类的toString函数。

如果想要得到我们预期的结果,就涉及到了虚函数的概念,会在下一篇讲到(C++虚函数)。

多态

多态就是多种形态的意思。

多态意味着一个父类型的变量可以引用一个子类型的变量。

displayGeometricObject(const GeometricObject g)函数能够传入不同类型的参数就是多态的体现。

原文链接: https://www.cnblogs.com/bwjblogs/p/12781072.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++泛型程序设计和多态

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/344719

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午2:51
下一篇 2023年3月2日 上午2:51

相关推荐