use*_*951 13 c++ inheritance protected
公共继承很容易.
答:公共B意味着每个A都是B.在大多数编程语言中,如vb.net和objective-c,这是唯一的继承类型.
私人继承也很容易,但毫无意义
答:私人B意味着A由B实现.但是,这是毫无意义的,因为这意味着A应该包含B. 所有权意味着更少的耦合,没有缺点.
然后我们有保护继承.
任何人都可以向我解释这到底是为了什么?有人说这是"作为一种关系".我还不是很清楚.
有没有人有一些样本案例,人们使用受保护的继承以良好的模式(和良心)实际生产用途?
Arn*_*rtz 16
私人继承也很容易,但毫无意义
答:私人B意味着A由B实现.但是,这是毫无意义的,因为这意味着A应该包含B. 所有权意味着更少的耦合,没有缺点.
你可能没有看到私人继承的原因并不意味着它毫无意义.有几种情况下私人继承有其原因.你是对的,乍一看,私有继承意味着有一个像聚合一样的关系,而私有继承有一个(稍微)更紧密的耦合.
支持私人继承而不是侵略的原因可能是以下一些原因:
这些原因显然是技术原因,有些甚至可能会说"黑客".但是,存在这样的原因,因此私有继承并非完全没有意义.它不是"纯粹的OO风格" - 但C++也不是纯粹的OO语言.
一旦您理解了私有继承的继承,保护继承的原因就非常简单:
如果您有理由私下继承某些东西并希望获得派生类可访问的那些好处(即您的类的成员或typedef),请使用protected inheritance.显然,应该几乎不使用私有继承,并且更加保护继承.
保护继承的主要动机是正交性.在所有其他环境中,您有三种不同的访问控制:私有,受保护和公共.为什么继承会有所不同?在实践中,人们可以争辩说,一般来说,没有必要或使用受保护的访问.这可能会夸大案件,但可以肯定的是,保护比私人或公共更少.
此外,私有继承并非毫无意义,实际上,它对应于继承的原始用法.只要执行实现的基类使用派生类必须重载的虚函数,就不能使用包含.
| 归档时间: |
|
| 查看次数: |
4391 次 |
| 最近记录: |