随笔-145  评论-173  文章-70  trackbacks-0
偶感得到一本好书,所以分享下心得,看的很慢,呵呵。

总括:此部分写的还是比较好,特别是第一章,介绍了面向对象编程的特别,关键是从一个解决问题的角度来分析,相比较而言,C++ Primer更显得杂乱无章。通过对问题深入,根据解决问题的方法,来实现最合理化的得到目的,从而引出继承等等一系列概念和手段。

 

1.     构造器

e.g  Data(int monthln,int dayln,int yearln)

{

  Month = monthln;

  Day  =  dayln;

  Year  =  yearln;

}

Date thedate(7,1,2003);

Date thisdate;

第一个调用了用户定义的构造函数来初始化相应的数据,问题是,如果是0-参数的构造器呢?就是下面的那种情况,没有任何参数,默认的,编译器会自动生成一个,这个就是缺省构造函数,但是如果用户定义了一个0-参数的构造器,那么就不会自动生成这样一个了。从安全性角度去看,定义类的时候,应当显示的定义一个缺省构造函数(如果有继承的话,没有定义基类的缺省构造函数是会出现编译错误的。)

注意:一个构造器,不管有没有参数,都不会自动初始化类的字段,所以必须自己显式的写出代码来初始化。

2.     继承的细节

我们可能经常遇到这样的问题,在开发一个类B的时候,发现其他的一些类A的方法是非常有用的。一个可能性就是令BA继承,也就是说,BA的子类,这样就可以使用A的所有方法;还有一种方案,就是在B中定义一个字段,它的类型是A,通过这个字段调用A的方法。前者,就是“Is a(是一个)的关系,而后者就是”Has a”(有一个的关系)。如何实现这种区分更好的来规划呢,一般,如果类B分享了A的全部功能,那么BA继承是更好的选择,但是如果B中只有一个组件能从A中受益,那么就是Has a来实现了。。

 



posted on 2009-11-11 22:49 deercoder 阅读(364) 评论(0)  编辑 收藏 引用 所属分类: C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理