C++ OOP Design

本篇博客深入探讨了面向对象编程中继承与组合的区别及应用,解释了如何在设计模式中灵活使用这两种机制来增强代码的可扩展性和复用性。通过对比实例,清晰展示了它们各自的特点及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Extensibility
With play( )defined as virtual in the base class, you can add as 
many new types as you want without changing the tune( )
function. In a well-designed OOP program, most or all of your 
functions will follow the model of tune( )and communicate only 
with the base-class interface.
Such a program is extensible because 
you can add new functionality by inheriting new data types from 
the common base class. The functions that manipulate the base class interface will not need to be changed at all to accommodate 

the new classes. 



You’ve seen in this chapter that it’s impossible to understand, or 
even create, an example of polymorphism without using data 
abstraction and inheritance. Polymorphism is a feature that cannot 
be viewed in isolation (like constor a switchstatement, for 
example), but instead works only in concert, as part of a “big 
picture” of class relationships. People are often confused by other, 
non-object-oriented features of C++, like overloading and default 
arguments, which are sometimes presented as object-oriented. 
Don’t be fooled; if it isn’t late binding, it isn’t polymorphism.
 



Choosing composition vs. inheritance
Both composition and inheritance place subobjects inside your new 
class. Both use the constructor initializer list to construct these 
subobjects. You may now be wondering what the difference is 
between the two, and when to choose one over the other. 
Composition is generally used when you want the features of an 
existing class inside your new class, but not its interface. That is, 
you embed an object to implement features of your new class, but 
the user of your new class sees the interface you’ve defined rather 
than the interface from the original class. To do this, you follow the 
typical path of embedding private objects of existing classes inside 
your new class. 
Occasionally, however, it makes sense to allow the class user to 
directly access the composition of your new class, that is, to make 
the member objects public. The member objects use access control 
themselves, so this is a safe thing to do and when the user knows 
you’re assembling a bunch of parts, it makes the interface easier to 
understand.


From<thinking in C++>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值