class在缺省情况下所有成员都是私有的
带public的都可以被外部成员访问

构造函数最重要的作用是创建对象本身,
C++规定,每个类必须有一个构造函数,没有构造函数就不能创建任何对象。

C++又规定,如果一个类没有提供任何的构造函数,则C++提供一个默认的构造函数,由c++编译器提供,它只负责创建对象,而不做任何初始化工作。

只要一个类定义了一个构造函数,不管这个构造函数是否是带参数的构造函数,c++就不在提供默认的构造函数。也就是说如果为一个类定义了一个带参数的构造函数,还想要无参数的构造函数,则必须自己定义

析构函数,对象生命周期结束的时候释放内存。析构函数没有返回值和参数

this指针:一个对象的this指针并不是对象本身的一部分不会影响sizeof(对象)的结果this作用域是在类内部,

this指针的使用:

  一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n)。

继承:
class Fish : public Animal
Animal称为基类,Fish称为派生类,父类子类,孩子继承了父亲特性。

private:
在子类中都不能被访问
protect:
在子类中可以访问

构造函数调用先构造父类,析构的时候相反
1.08.12

函数的覆盖,发生在父类与子类之间。

Animal::breath()作用域标示符。用于表示哪个类的。

多态性:
虚函数
当C++编译器在编译的时候,发现Animal类的breathe()函数是虚函数这个时候C++就会采用迟绑定技术,在运行时,依据对象的类型(在程序中我们传递的FIsh类对象的地址)来确定调用的是哪一个函数,这种能力叫做C++的多态性。

在基类相应函数加上virtual之后子类有的函数调用子类的,子类没有的调用父类的。

纯虚函数virtual void breath()=0;指没有实现的函数
现有名称没有内容在派生类给出定义,不确定。

可以利用
#ifndef XXXXX
#define XXXXX
class sss{
} ;
#endif
来防止重复定义