首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

承继的方便(面向对象程序设计)

2012-07-02 
继承的方便(面向对象程序设计)定义一个任意进制的数Number类,继承自string类:Number类的属性:_radix表示数

继承的方便(面向对象程序设计)

定义一个任意进制的数Number类,继承自string类:

Number类的属性:
_radix表示数的基数,
_inum表示数的相应的十进制数

用string存储任意进制的数(可以说是用字符串来存,r进制的数不适合用int来存)

运行结果如下(依次输入基数,第一个数,第二个数):

承继的方便(面向对象程序设计)

       为什么说继承方便呢?你是否注意到输入a,b时竟然可以直接cin,cout,在itostr函数中用了push_back等string类的成员函数,及在strtoi函数中也用了[ ]运算符,这些其实都是string类中的成员函数(包括标准输入输出的>>与<<),Number类公有继承了string类,都可以直接拿来用了,挺方便!

       这里的Number类中只重载了+,当然可以类比地重载-, *, /,这里我就不多写了。

       其实在此之前我写了几个版本,比如没使用_inum作为数的属性,重载+、进制转换函数是作为全局函数的。而现在写的版本基本符合一个封装了。

       启示:为什么定义类时往往不把属性设为公有的,其中的原因是为了安全性。而我从这篇博客得到了另一点原因,在继承时也使结构更清晰(猜想),我对C++的string类的内部也不是很了解,看源码没找到string类的数据成员,其实string类也是从其它类继承来的。

 

 

附:之前的一个版本

 

 

 

 

热点排行