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
来防止重复定义