由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++ private inheritance. v.s. composition
相关主题
请教一个class design的问题java 8 也可以fp啊
这里高手很多, 我就趁机会问一个严肃的问题吧请问设计一个虚拟的动物园,用什么设计模式好啊?
aggregation vs. compostion. vs. association讨论:关于一个design 问题
tech question: how does oracle uses composite index?Bloomberg offer全过程
wwzz来讲讲cassandra吧1st Amazon phone interview (1hr)
haskell 真是逆天, 各种特殊符号都有特殊用途大家看看这个C++问题
Clump, a library for expressive and efficient service composition问一个interview时候design的general问题
iq 140的人说小时候无法理解变量,需要妈妈帮忙[合集] 问几道amazon面试题
相关话题的讨论汇总
话题: base话题: virtual话题: class话题: private
进入Programming版参与讨论
1 (共1页)
c**a
发帖数: 316
1
想不通这个问题, 请指教一下。
如果要访问protected data当然 只能用 private inheritance 不能composition
这个好理解。
但是书上还这么说
if derived class wanna redefine virtual function,
we should we private inheritance.
我觉得不是啊.要redefine virtual function, 咋用都可以。
class Base
{
public:
virtual void f(){std::cout << "Base"; };
};
class DerivedPrivate:private Base
{
public:
virtual void f(){std::cout << "Derived via inheritance"; Base::f();};
};
class DerivedComposite
{
public:
virtual void f(){std::cout << "composite"; b.f();};
private:
Base b
l********g
发帖数: 134
2
I guess the point of private inheritance is, in your case, class
DerivedPrivate can override virtual functions of class base, while class
DerivedComposite can not.

【在 c**a 的大作中提到】
: 想不通这个问题, 请指教一下。
: 如果要访问protected data当然 只能用 private inheritance 不能composition
: 这个好理解。
: 但是书上还这么说
: if derived class wanna redefine virtual function,
: we should we private inheritance.
: 我觉得不是啊.要redefine virtual function, 咋用都可以。
: class Base
: {
: public:

c**a
发帖数: 316
3
But since Derived classes can no longer act as Base,
why we shall override Base virtual func.
We can simply redelare and redefine new virtual func. in Derived.

【在 l********g 的大作中提到】
: I guess the point of private inheritance is, in your case, class
: DerivedPrivate can override virtual functions of class base, while class
: DerivedComposite can not.

l********g
发帖数: 134
4
again, class Base and class DerivedPrivate support dynamic binding, while
class DerivedComposite cannot.

【在 c**a 的大作中提到】
: But since Derived classes can no longer act as Base,
: why we shall override Base virtual func.
: We can simply redelare and redefine new virtual func. in Derived.

t****u
发帖数: 8614
5
基本原则是能用composition就用composition,除非composition不能work只能使用
private inheritance才用inheritance。

【在 c**a 的大作中提到】
: 想不通这个问题, 请指教一下。
: 如果要访问protected data当然 只能用 private inheritance 不能composition
: 这个好理解。
: 但是书上还这么说
: if derived class wanna redefine virtual function,
: we should we private inheritance.
: 我觉得不是啊.要redefine virtual function, 咋用都可以。
: class Base
: {
: public:

S*********g
发帖数: 5298
6
effective C++的item 42:
Use private inheritance judiciously

【在 t****u 的大作中提到】
: 基本原则是能用composition就用composition,除非composition不能work只能使用
: private inheritance才用inheritance。

c**a
发帖数: 316
7
。。。
就是看了上面的书才有这个问题。
Scott 说 用 private 主要有两个原因, protected data 不必说。
Redefine virtual func 这点不理解。

【在 S*********g 的大作中提到】
: effective C++的item 42:
: Use private inheritance judiciously

c**a
发帖数: 316
8
...
不知道你在说什么, 但是貌似无关。

again, class Base and class DerivedPrivate support dynamic binding, while
class DerivedComposite cannot.

【在 l********g 的大作中提到】
: again, class Base and class DerivedPrivate support dynamic binding, while
: class DerivedComposite cannot.

l********g
发帖数: 134
9
then forget it.

【在 c**a 的大作中提到】
: ...
: 不知道你在说什么, 但是貌似无关。
:
: again, class Base and class DerivedPrivate support dynamic binding, while
: class DerivedComposite cannot.

S*********g
发帖数: 5298
10
再往下看Item 43,仔细看那个MyPerson和PersonInfo的例子

【在 c**a 的大作中提到】
: 。。。
: 就是看了上面的书才有这个问题。
: Scott 说 用 private 主要有两个原因, protected data 不必说。
: Redefine virtual func 这点不理解。

相关主题
haskell 真是逆天, 各种特殊符号都有特殊用途java 8 也可以fp啊
Clump, a library for expressive and efficient service composition请问设计一个虚拟的动物园,用什么设计模式好啊?
iq 140的人说小时候无法理解变量,需要妈妈帮忙讨论:关于一个design 问题
进入Programming版参与讨论
c**a
发帖数: 316
11
书都看完了。 还是不懂。。。
他后来用WidgetTimer 去包Timer 我觉得没必要嘛, 直接composite 就好了。
完了,我们说的不是一个版本的书。。。

【在 S*********g 的大作中提到】
: 再往下看Item 43,仔细看那个MyPerson和PersonInfo的例子
c**a
发帖数: 316
12
。。。
因为是 private inheritance 了, 所以 Derived 不能act as base
所以和dynamic binding 没什么关系。

then forget it.

【在 l********g 的大作中提到】
: then forget it.
S*********g
发帖数: 5298
13
我把相关的那段贴上来吧
For example, Item 34 describes how a Protocol class exists only to specify
an interface for derived classes; it has no data members, no constructors, a
virtual destructor (see Item 14), and a set of pure virtual functions that
specify the interface. A Protocol Person class might look like this:
class Person {
public:
virtual ~Person();
virtual string name() const = 0;
virtual string birthDate() const = 0;
virtual string address() const = 0;
virtual string nationality() cons
c**a
发帖数: 316
14
明白了。
谢谢。
其实新版的也有这段, 只是不同地方而已。
我得多看几遍书了。

a
that

【在 S*********g 的大作中提到】
: 我把相关的那段贴上来吧
: For example, Item 34 describes how a Protocol class exists only to specify
: an interface for derived classes; it has no data members, no constructors, a
: virtual destructor (see Item 14), and a set of pure virtual functions that
: specify the interface. A Protocol Person class might look like this:
: class Person {
: public:
: virtual ~Person();
: virtual string name() const = 0;
: virtual string birthDate() const = 0;

S*********g
发帖数: 5298
15
我的版本里也不是在另外一个item里的,在item 43里

【在 c**a 的大作中提到】
: 明白了。
: 谢谢。
: 其实新版的也有这段, 只是不同地方而已。
: 我得多看几遍书了。
:
: a
: that

c**a
发帖数: 316
16
我错在 总是误以为 virutal 就一定在 public interface 里面。

【在 S*********g 的大作中提到】
: 我的版本里也不是在另外一个item里的,在item 43里
1 (共1页)
进入Programming版参与讨论
相关主题
[合集] 问几道amazon面试题wwzz来讲讲cassandra吧
设计题目的本质问题haskell 真是逆天, 各种特殊符号都有特殊用途
我也来写个面经吧Clump, a library for expressive and efficient service composition
OO design 题一般思考的方向?iq 140的人说小时候无法理解变量,需要妈妈帮忙
请教一个class design的问题java 8 也可以fp啊
这里高手很多, 我就趁机会问一个严肃的问题吧请问设计一个虚拟的动物园,用什么设计模式好啊?
aggregation vs. compostion. vs. association讨论:关于一个design 问题
tech question: how does oracle uses composite index?Bloomberg offer全过程
相关话题的讨论汇总
话题: base话题: virtual话题: class话题: private