《VC++深入详解—孙鑫》Lesson2—掌握C++

一、C++特性基础知识

1、结构体与类的区别

  • 结构体默认情况下,其成员是public的(可以在外部调用)
  • 类默认其成员是private的(只在类内部调用)
  • 例子:客厅(public,对外开放)和卧室(private,只对家人开放)

结构体程序:

#include <iostream.h>

struct point

{

int x;

int y;

void output()

{

cout<<x<<endl<<y<<endl;

}

};

void main()

{

point pt;

pt.x=0;

pt.y=0;

pt.output();

}

类程序:

#include <iostream.h>

struct point

{

int x;

int y;

void output()

{

cout<<x<<endl<<y<<endl;

}

};

void main()

{

point pt;

pt.x=0;

pt.y=0;

pt.output();

}

2、类与对象的关系

  • 我们定义了类point和对象pt,对象可以看做是一个类的具体实例
  • 如电脑是一个抽象词时(包含显示器、主板等),这时候可以看做是一个类;但如果是具体型号的电脑(有具体的显示器和主板的参数),这时的电脑就是一个对象;

3、构造函数与析构函数

  • 上述程序中的point()//point类的构造函数
    • C++允许有两个构造函数存在,具体用哪个由main()函数确定
  • 析构函数~point(),与构造函数作用相反,清除类的对象,
    • 析构函数不允许带参数,一个类里面只有一个

4、函数的重载

  • 条件:函数的参数类型、参数个数不同,才能构成函数的重载
  • 举例:void output() 和 int output() 不能构成函数的重载,虽然其函数类型不同,但是其参数个数相同

5、this指针

  • 指向对象本身,要记得区分开形参与类的成员本身
  • 对所有数据成员的访问,都隐含的加上了前缀this->,如x=0等价于this->x=0

6、类的继承

  • 子类继承父类的特性(如父类为动物animal,具有吃、睡觉和呼吸的方法,子类为鱼fish,继承了动物的方法)
  • 类的继承三种访问特性
    • public:外部访问
    • protected:只在子类内访问
    • private:只能在类本身访问
  • 构造子类fish的对象时,父类和子类的构造函数和析构函数调用顺序
    • 构造函数先父后子,析构函数先子后父
    • 父类的构造函数是带参数的:只需要在子类中显式调用父类的带参数的构造函数

#include <iostream.h>

class animal

{

  public:

    animal(int weight, int height)

    {

      cout<<"animal construct"<<endl;

    }

    ...

};

class fish:public animal

{

  public:

    fish():animal(400,300)

    {

      cout<<"fish construct"<<endl;

    }

    ...

};

void main()

{

  fish fh;

}

7、C++的多态性

  • 在基类的函数前面加上virtual关键字,在派生类中重写该函数
  • 运行时根据对象的实际类型判断,如果是派生类,就调用派生类的函数,如果是基类,就调用基类的函数
  • 区分开子函数覆盖,C++的多态性是由虚函数实现的

8、函数的覆盖、隐藏与重载的区别

  • 函数的覆盖发生在基类和派生类中,两个函数完全相同,都为虚函数(前面加virtual)
  • 函数的隐藏是指没有加virtual,派生类中隐藏了基类的同名函数,如果想要调用,则需要“基类名::函数名(参数)”的形式
  • 函数的重载是发生在一个类中的

9、引用与指针的区别

  • 引用和用来初始化的变量指向同一个内存,其本身是不占用内存的
  • 指针是地址,需要占用存储空间
  • 如int a=5; int&b=a;//表示一个引用,必须在申明时初始化

10、条件预处理指令

  • 为了防止有些头文件重复定义,需要采用下述格式进行预处理,以animal.h为例
  • #ifdef ANIMAL_H_H
  • #define ANIMAL_H_H
  • 头文件结尾加#endif
posted @ 2020-10-07 14:38  白衣居士  阅读(159)  评论(0)    收藏  举报