基础问题 关于继承

双杯献酒 2002-10-16 12:13:33
在C++中,

1.什么情况下,成员变量应该定义成 public ?
2.什么情况下,成员变量应该定义成 protected ?
3.什么情况下,成员变量应该定义成 private ?

4.什么情况下,成员函数应该定义成 public ?
5.什么情况下,成员函数应该定义成 protected ?
6.什么情况下,成员函数应该定义成 private ?

7.什么情况下,成员函数应该定义成 virtual ?
...全文
31 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qrlvls 2002-10-16
  • 打赏
  • 举报
回复
在你需要在其它类中对该类的函数进行应用时,可以用public和友元
protect在子类中可视,但不能为其它函数引用
private私有成员

不应该把函数和变量区分得太严格,对public,protect,private来说时一视同仁的

virtual的东西很多,比如子类和父类可以有相同的函数形式,但具体实现不一样
如果时 virtual xx()=0;纯虚函数就应该重新对它编写
qrlvls 2002-10-16
  • 打赏
  • 举报
回复
public引用
public -> public
protect -> protect
private -> private
protect引用
public -> public
protect -> private
private -> private
lllhaier 2002-10-16
  • 打赏
  • 举报
回复
同意楼上的!
其实你理解public,protected,private的字面意思你就可以猜得出其区别来。
函数和变量在权限这个问题上是一致的。

virtual则比较不同,它是指虚函数的意思。虚函数就是派生类时可以重载的函数,这个问题是c++的核心问题,也是c++作为面相对象程序设计语言的根
本。
我想如果你对这个问题没有搞懂的话,那么请暂时不用用c++编写程序,更不用说vc了。
freelybird 2002-10-16
  • 打赏
  • 举报
回复
首先他们的意义:
1 public: 任何地方都是可见的.
2 protected: 只有在子类中是可见的
3 private: 除定义它的类当中,任何地方都是不定义可见的

所以,一般有如下规律:
变量一般用protected
对外接口函数一般用public, 否则用protected. 如果可能被子类overriding,则应加上virtual
双杯献酒 2002-10-16
  • 打赏
  • 举报
回复
有谁能说的详细一些吗?
realdreamer 2002-10-16
  • 打赏
  • 举报
回复
public 类需要把自己的接口向外公开出去时
protected 类只希望自己的子类能够访问时
private 类只希望自己内部访问, 不想公开

如果你不明白 virtual , 是不该问"什么情况下定义成 virtual", virtual 是一个大东西, 不是问个问题就能明白其中的, 找本好书看看去吧
gyf 2002-10-16
  • 打赏
  • 举报
回复
同意楼上的!
双杯献酒 2002-10-16
  • 打赏
  • 举报
回复
总结:
1.pubic的数据成员,
尽量少用,可以用public的SetXXX/GetXXX组合来操作它。
2.protected的数据成员,
如果希望类在被继承后,在派生类中有可能要操作它,
并且允许这样直接操作,就用。
3.private的数据成员,
如果
(1)派生类没有理由会用到它,
(2)不允许派生类直接操作,
就用private。

4.函数的方式与数据成员类似。

5.virtual函数
如果希望在派生类重写过后,
在基类中的相关调用也使用派生类提供的方法,
就用virtual,否则不用virtual。

6.友函数
如果函数(运算符)的第一个参数不是本类,
又要操作本类的成员,用friend,
否则,重载函数(运算符)。

7.还有其他的什么补充建议吗?
四大皆空相 2002-10-16
  • 打赏
  • 举报
回复
上面的同志说的都很好,该说的都差不多了,我说个现实的例子:
如果,你 定义了一个类,不希望其它类继承,怎么办?

编译时刻错误的做法:
private:
构造函数();

这种思路对限制方式是不是种扩展? 换句话说,到底该是public,private
更多的需要经验,编写程序的经验. 当你定义一个public时候,在应用时,
忽然想到有个"友元"函数可以访问它,那它若是个private会不会更好那?
又想到继承问题,那protected会不会更好? 如此种种. 仅仅听懂一种
思想是欠缺的,更多要的是融入实战而得来的经验.

个人感受: MFC里学不好OO思想,当遇到项目时,需要自己进行底层数据结构
搭建, 自己定义类模块时,你会很快融入其中.
coyer 2002-10-16
  • 打赏
  • 举报
回复
C++书中一般还是有描述的吧。
mattrew 2002-10-16
  • 打赏
  • 举报
回复
1.什么情况下,成员变量应该定义成 public ? // 这样的数据完全公开,与封装有点违背,一般情况下不么这样去定义数据
2.什么情况下,成员变量应该定义成 protected ?// 这样的数据是针对继承的,如果希望数据只被继承一代,这样继承的数据在派生类中为私有的
3.什么情况下,成员变量应该定义成 private ?//实现完全封装,只有类中的成员函数可以访问,且不可继承

4.什么情况下,成员函数应该定义成 public ?//公有函数
5.什么情况下,成员函数应该定义成 protected //保护函数
6.什么情下,成员函数应该定义成 private //一般没有这样使用的,除非成员函数之间调用,不建议这么使用
虚函数 在多态中使用 一般昔构函数使用虚函数


7.什么情况下,成员函数应该定义成 virtual ?
四大皆空相 2002-10-16
  • 打赏
  • 举报
回复
上面的同志说的都很好,该说的都差不多了,我说个现实的例子:
如果,你 定义了一个类,不希望其它类继承,怎么办?

编译时刻错误的做法:
private:
构造函数();

这种思路对限制方式是不是种扩展? 换句话说,到底该是public,private
更多的需要经验,编写程序的经验. 当你定义一个public时候,在应用时,
忽然想到有个"友元"函数可以访问它,那它若是个private会不会更好那?
又想到继承问题,那protected会不会更好? 如此种种. 仅仅听懂一种
思想是欠缺的,更多要的是融入实战而得来的经验.

个人感受: MFC里学不好OO思想,当遇到项目时,需要自己进行底层数据结构
搭建, 自己定义类模块时,你会很快融入其中.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧