关于面向对象的思想(继承)!急...
以下是我定义的类...
class A
{
protected:
virtual void sum() = 0; //只作内部使用
public:
//..
}
class B:public A
{
(1)private:
void sum();
(2)protected:
void sum();
}
请问我在class B中实现sum()方法...请问方法(1)对 还是方法(2)对??
我试过了...两种方法都可以...但我不明??请高手指教!!!
说详细些...
问题点数:20、回复次数:8Top
1 楼iicup(双杯献酒)回复于 2005-01-09 00:09:04 得分 5
都可以。
因为虚函数机制是和public/protected/private无关的。Top
2 楼zhangfjj(小张)回复于 2005-01-09 00:09:51 得分 5
姑且不论为什么,
问题你这种纯虚函数定义为protected的方式与抽象类的应用不符。抽象类的意义在于保证进入继承层次的各个类都具有纯虚函数所要求的行为。Top
3 楼Kshape(C/C++初学者~~~~)回复于 2005-01-09 10:02:45 得分 5
protected:
virtual void sum() = 0;
同意楼上说的,这里不好Top
4 楼truewill(无处不在)回复于 2005-01-09 10:11:10 得分 5
不同意楼上的
纯虚函数定义为protected是完全有意义的
这样只是为了给另一个自己类的public函数调用而已,留一个借口给子类
至于继承类的public/protected/private只是修改函数的访问方式而已Top
5 楼mark888(Mark)回复于 2005-01-09 10:21:18 得分 0
楼上truewill(无处不在) 正讲出我的用意...
如果我定义为public. 而我的派生类的接口根本不需要void sum() ;
我只是为了以后的派生类中的成员函数要用到void sum()
如果兄弟们觉得我不对...而有更好的方法请讲出...Top
6 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-01-09 14:27:43 得分 0
protected使只有子类能访问Top
7 楼greenteanet(扎扎实实打基础,保持一颗平常心。)回复于 2005-01-09 14:40:22 得分 0
呵呵,看你怎么用你的基类.你这样子直接叫我们说的话,好难回答.Top
8 楼mark888(Mark)回复于 2005-01-09 14:52:49 得分 0
其实我的用意很简单,每个派生类都必须重构抽象类中void sum() ,派生类中的方法
void sum() 只作本类使用,不作类的接口...我这样使用有问题不??有问题请指出,
即...我在类B中...应该使用方法(1) 还是方法(2) 还是有更好的方法Top




