C++基本特性(2)

来源:互联网 发布:directx游戏编程 pdf 编辑:程序博客网 时间:2024/06/11 18:30
2008-09-19 20:06

1.继承。

父类与子类:

#include <iostream.h>
class Animal
{
public:
void eat()
{
cout<<"Animal eat"<<endl;
}
void breathe()
{
cout<<"Animal breathe"<<endl;
}
void sleep()
{
cout<<"Animal sleep"<<endl;
}

};
class Fish : public Animal
{

};
void main()
{
Animal an;
an.eat();
Fish fh;
fh.sleep();
}

如上代码.

关于3种继承方式.

public:允许任何访问

protected:允许子类访问。外部或main()函数不能访问.

private:任何都不可访问,除非自己!

基类与子类继承特性:

如图:

2.子类继承父类,如同时有构造函数。先构造父类函数,然后构造子类,而析构函数与之相反!

效果如下:

代码如:

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);//调用直接初始化