2.向父类构造函数传递参数.
class Fish : public Animal
{
public:
Fish():Animal(400,300),a(0) //向基类带参数的构造函数传递参数!也可以在本类进行常量初始化
{
cout<<"Fish construct"<<endl;
}
~Fish()
{
cout<<"Fish deconstruct"<<endl;
}
private:
const int a;
};
3.函数的覆盖
在父类与子类用相同的函数。即覆盖掉原来的函数。函数重载是发生一个类中!
Animal::breathe(); ::是作用域标示符,是指定后面的变量或函数是属于哪个类的。
技巧:类型转换.
能不能转换,主要看内存模型.
如.int 转 char .(丢失精度) ,char 转int 允许。
4.多态性.
虚函数:你想用virtual函数.作用:如果子类有breahe方法,就调用breathe,如没有调用父类的。
纯虚函数:virtual void breathe()=0;.即抽象类!必须在子类实现了这个函数!即先有名称,没内容,在派生类实现内容!
5.引用
变量的别名.
int a=6;
int &b=a; //定义的时候必须初始化.
与指针的区别:
指针需要内存空间.而引用不需要。就是没有自己的地址。例子:
void change(int &a,int &b)
{
}
void main()
{
int x=6;
int y=7;
change(x,y);//调用直接初始化