c++的多态性

.C++的多态性

多态性:

前提继承,虚函数,指针域被引用

类型的转换

纯虚函数:不需要函数体(一直不需要函数体)

友元

必须在一个类的内部声明。打破继承的局限性

访问必须是使用对象点的方式来访问

注意友元没有当前的对象。(this;

静态:

属于整个类;不是属于一个对象;

注意友元没有当前的对象。(this;

 

.运算符重载

java不支持运算符的重载

一般的函数的继承性

子函数内的函数可以继承父函数中的成员变量,可以调用

父函数中的函数;总之父函数中的东西,子函数基本可以调用;

注意在c++的继承关系中一般父类的成员动作函数

需要在类的外面实现,最后在主函数中调用。如果在

主函数中直接使用时由于多个继承会产生冲突。例子

#include <iostream.h>

class Mammal

{

public:

virtual void eat(){cout<<"1"<<endl;}

virtual void shout(){cout<<"2"<<endl;}

virtual void sleep(){cout<<"3"<<endl;}

};

class  Cat:public Mammal

{public :

void eat(){cout<<"猫吃鱼"<<endl;}

void shout(){cout<<"猫吃鱼"<<endl;}

void sleep(){cout<<"猫吃鱼"<<endl;}

};

class  Dog:public Mammal

{public :

void eat(){cout<<"猫吃鱼"<<endl;}

void shout(){cout<<"猫吃鱼"<<endl;}

void sleep(){cout<<"猫吃鱼"<<endl;}

};

void play( Mammal p )//注意之处

{

p.eat();

p.sleep();

p.shout();

}

int main()

{

Cat c;

Dog d;

play(c);

play(d);

 

}

三.拷贝构造函数

这个函数实在一个类的内部调用的,不存在继承拷贝构造函数一般是函数的参数不一样和系构函数差不多

小例子:

#include <iostream.h>

class A{

int d;

public :

A():d(0){cout<<"A()"<<endl;}

A(int d):d(d)/*函数的参数传递*/{cout<<"A(int)"<<endl;}

A(int x,int y):d(x*y){cout<<"A(i,i )"<<endl;}//函数的拷贝注意在这个函数中需要一个小的系构函数把申请的变量释放掉;

void disp()

{

cout<<"d="<<d<<endl;

}

~A(){cout<<"~A()"<<endl;}

};

int main()

{A a1;

a1.disp();

a1 = A(10);

a1.disp();

a1 = (A)100;

a1.disp();

a1 = 200;//A(200),(A)200

a1.disp();

cout << "---------" << endl;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值