美文网首页
《VC++深入讲解》第一章第二章读书笔记

《VC++深入讲解》第一章第二章读书笔记

作者: 十月石榴2013 | 来源:发表于2017-12-03 11:45 被阅读9次

    《VC++深入讲解》 孙鑫 电子工业出版社。书的第一版是2007年的,我看的是2013年的修订版。书中介绍的MFC架构,现在被广泛认为已经过时了,但前几章对一些概念为何引入讲得比较透彻,是一本不错的有点基础的菜鸟的入门书籍。


    《VC++深入讲解》.png

    第一章

    1. 名词解释:
      【SDK】Software Development Kit,软件开发包
      【句柄】在Windows程序中有各种资源(窗口、图标、光标等),系统在创建这些资源时会为它们分配内存,并返回标识这些资源的标识号,即句柄(Handle)。
      (HWND)窗口句柄
      (HCURSOR)光标句柄
      (HBRUSH)画刷句柄

    2. 消息队列:
      每个Windows程序对应一个消息队列,由Windows系统创建。系统会将鼠标动作、键盘动作等消息放到对应窗口的消息队列中,而应用程序通过不断循环,从消息队列中取出消息,进行相应。
      Windows消息分“进队消息”和“不进队消息”,不进队消息在系统调用串口的过程中直接发送给窗口。

    3. 代码部分:
      用VS会因为不兼容报错,则,右键项目——>属性——>配置属性——>常规——>字符集:使用多字节字符集。

    第二章

    1. this指针:
      this指针指向对象本身,代表对象本身的地址。例子:
    class expamle
    {
    public: 
        int x ; 
        int y ;
        example()       // 构造函数
        {
            x = 0;
            y = 0;
        }  
        example( int x, int y)        // 构造函数的重载
        {
            this->x = x;            // 等式左边的x是类里面对象的那个x,右边的是形参
            this->y = y;            // 等式左边的y是类里面对象的那个y,右边的是形参
        }  
        ~example()              // 析构函数
        {
        }
    };
    
    1. 继承:
      构造子类的对象的时候,会先构造父类的对象,因此,要求构造函数的调用相一致。当子类中不含参数,而父类中含参数时,传递参数的例子:
    class fish : public animal
    {
    public: 
        fish() : animal(300,400)
        {
            // 函数体
        }
    };
    
    1. 多重继承
    class B: pubic A1, public A2
    {
        // s……
    }
    
    1. 虚函数
      子类与父类中如果有函数重名,则调用父类函数,因为子类与父类的结构是:


      父与子.png

      但如果父类中的是虚函数,则调用子类的。
      用一句话概括就是;在基类函数的前面加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型调用相应的函数。如果对象类型是派生类就调用派生类的函数,如果对象类型是基类,就调用基类的函数。

    2. 纯虚函数
      例子:
    class animal
    {
    public:
        virtual void breath() = 0; 
    }
    
    1. 函数的覆盖、隐藏和重载的区别:
      【重载】发生在同一类中,函数名相同,参数不同;
      【覆盖】基类函数为虚函数,发生覆盖的两个函数分别位于派生类和基类中,函数名称和参数列表必须相同;
      【隐藏】发生在派生类和基类之间,不属于覆盖的情况。

    7.引用:
    例子:

    // 执行完后,a和b的值都变成c
    // 相当于b是a的小名
    int a = 5;
    int &b = a;
    int c = 3;
    b = c;
    
    // 更普遍的用法,提高代码可读性。
    #include <stdio.h>
    void change(int& a, int& b)    // 交换a和b的取值,有趣的算法。
    {
        a = a + b;
        b = a - b;
        a = a - b;
    }
    
    void main()
    {
        int x = 5;
        int y = 6;
       change(x, y);
        cout << “x = ” << x << endl;
        cout << “y = ” << y << endl;
    }
    

    其他

    1. 变量命名规则(微软公司创建的windous命名约定,匈牙利表示法):


      匈牙利变量命名规则.png
    2. VC++ 的设计习惯与程序编译链接的原理与过程
      在头文件中包含类定义以及类成员函数的声明;
      在源文件中包含类成员函数的实现。
      解决重复包含都文件的方法:
    // 在头文件开头加上这句话:
    #ifndef ANIMAL_H_H
    #define ANIMAL_H_H
    class animal
    {
        ……
    }
    

    程序编译链接的原理与过程:


    VC++ 程序编译链接的原理与过程.png

    相关文章

      网友评论

          本文标题:《VC++深入讲解》第一章第二章读书笔记

          本文链接:https://www.haomeiwen.com/subject/yjdwbxtx.html