d****b 发帖数: 25 | 1 c++中 overload << operator 是用 friend function, 但是如果在derived class 中
也overload <<, 因为是friend, 不能virtual, 怎么搞呢, 是不是只能是自己定义一个
virtual void show() 的函数? 谢谢大家 | X****r 发帖数: 3557 | 2 直接overload operator <<就行了,和virtual没关系。
你大概是没分清楚overload和override的区别。
【在 d****b 的大作中提到】 : c++中 overload << operator 是用 friend function, 但是如果在derived class 中 : 也overload <<, 因为是friend, 不能virtual, 怎么搞呢, 是不是只能是自己定义一个 : virtual void show() 的函数? 谢谢大家
| d****b 发帖数: 25 | 3 但是如果有一个定义为指向base class 的指针p,后来又指向了derived class, 那么如
果用cout<<*p的话他是调用的base class的friend function, 我希望调用 derived
class的friend function. 怎么办呢?
【在 X****r 的大作中提到】 : 直接overload operator <<就行了,和virtual没关系。 : 你大概是没分清楚overload和override的区别。
| p***o 发帖数: 1252 | 4 你在friend function里调那个virtual viod show不就完了,
当然前提是你的friend function的参数是base &而不是base。
【在 d****b 的大作中提到】 : 但是如果有一个定义为指向base class 的指针p,后来又指向了derived class, 那么如 : 果用cout<<*p的话他是调用的base class的friend function, 我希望调用 derived : class的friend function. 怎么办呢?
| h*****0 发帖数: 4889 | 5 这个故事告诉我们,overload<<不是一个好的模式。
写一个函数toString()才是好办法。
【在 d****b 的大作中提到】 : c++中 overload << operator 是用 friend function, 但是如果在derived class 中 : 也overload <<, 因为是friend, 不能virtual, 怎么搞呢, 是不是只能是自己定义一个 : virtual void show() 的函数? 谢谢大家
|
|