孙鑫VC++讲座笔记-(2)

来源:互联网 发布:冷库选型软件 编辑:程序博客网 时间:2024/05/21 11:07

在网上搜索应该很多的,在这里就不多说了,只是添加一些自己不太清楚的部分。
详细的可以点击 
http://www.blog.edu.cn/user2/hxwwf/archives/2006/1256911.shtml
http://dev.21tx.com/2005/10/11/15683.html

1.#i nclude <xxx.h>与#i nclude "xxx.h"的区别:<>查找系统目录,""当前工作区目录,如果找不到再到系统目录!
2.如何防止类的重复定义?
   用#inndef Point_H_H
   #define Point_H_H
   ……//头文件
#endif
3.子类的构造函数自动调用父类的无参构造函数,如果父类没有(系统也没有自动分配),那么编译出错,这个时候可以在初始化列表的时候调用父类相应的带参数的构造函数。这种方式可以初始化类中const常量。
       类中成员的初始化有两种方法:一是用成员初始化列表方式,二是在构造函数中初始化。推荐如果是对象成员可以在成员初始化列表中初始化,如果是内部数据成员对象,如int,char等类型两种方法皆可,推荐在构造函数中初始化,这样程序比较清晰。
4.纯虚函数。example:  virtual void  function(void) = 0;当这样声明的时候,该类自动转化为抽象类,不能直接实例化对象,必须由子类实现该方法,而且是全部实现,否则子类也成为抽象类。使用纯虚函数可以先声明,而具体的实现可以由子类完成。
5.在头文件中声明了虚函数,那么在实现文件中该函数不需要再写virtual.而且只需要在父类中加,子类相应的函数自动成为虚函数。
6.引用。const型的引用。
   int a;
   const int &b = a;
   b = 1;//error     l-value specifies const object
   a = 1;//ok
7.关于函数重载(overload)覆盖(override),,隐藏(hide).
   重载发生在一个类中。覆盖和隐藏都是关于子类和父类的。
   根据《高质量C,C++编程指南》中,对于虚函数,应该是迟绑定(lata binding),所以出现 :
   sun sn;
   father *fa = &sn;//用fa调用的时候,调用子类的虚函数。
                        //如果子类和父类有相同的函数(返回值,函数名,参数),并且没有声明为虚函数,那么调用 父 类相应的函数,而不是子类的,这成为隐藏
                                 //如果子类和父类有相同名称的函数,但参数不同,不管是否是虚函数,都调用父类的相应的函   数,而不是子类的,这成为隐藏
8.子类的析构函数应该是虚函数。如: 
    A *a = new B;
    delete a;//先调用子类的析构函数,然后是父类的析构函数。如果析构函数不是虚函数,那么只会调用父类的构造函数

原创粉丝点击