c**********e 发帖数: 2007 | 1 假设某个derived class D 没有定义assignment operator, 而它的base class B 定义
了assignment operator,那么 D 在进行assignment的时候就会调用B的assignment
operator,以及所有D的数据成员的assignment operator。好像书上是这么说的。
按字面上说,B的数据成员都是D的数据成员,所以B的数据成员的assignment operator
也应该调用。但实际上不是这样。B的数据成员的assignment operator没有被调用。 |
c**********e 发帖数: 2007 | 2 某老大自宫了一篇回帖。俺猜一定臭骂俺傻叉,然后又决定不骂了,放俺一马。俺感激
不尽啊。 |
X****r 发帖数: 3557 | 3 你是指copy assignment operator吧。
B的数据成员被D继承,但不能简单等同于D的数据成员。
D的implicitly-defined copy assignment operator会调用B的
copy assignment operator,后者如果也是implicitly-defined的话
自然会调用B的数据成员的copy assignment operator,不然的话自然有
他自己的copy assignment的语义,D怎么能够越俎代庖来赋值B的成员呢。
operator
【在 c**********e 的大作中提到】 : 假设某个derived class D 没有定义assignment operator, 而它的base class B 定义 : 了assignment operator,那么 D 在进行assignment的时候就会调用B的assignment : operator,以及所有D的数据成员的assignment operator。好像书上是这么说的。 : 按字面上说,B的数据成员都是D的数据成员,所以B的数据成员的assignment operator : 也应该调用。但实际上不是这样。B的数据成员的assignment operator没有被调用。
|
c**********e 发帖数: 2007 | 4 You are right.
I was talking about "它的base class B 定义了assignment operator".
【在 X****r 的大作中提到】 : 你是指copy assignment operator吧。 : B的数据成员被D继承,但不能简单等同于D的数据成员。 : D的implicitly-defined copy assignment operator会调用B的 : copy assignment operator,后者如果也是implicitly-defined的话 : 自然会调用B的数据成员的copy assignment operator,不然的话自然有 : 他自己的copy assignment的语义,D怎么能够越俎代庖来赋值B的成员呢。 : : operator
|