多态相关(虚函数,覆盖,纯虚函数,抽象类)
2017-08-09 13:35
218 查看
面向对象三大特性:封装,继承,多态
其中多态在C++里是通过虚函数来实现的,主要实现的功能是继承里父类的指针调用子类的功能函数。
覆盖:覆盖虚函数才能实现多态。覆盖普通函数并不能实现多态…
重载:和多态没有半毛钱关系,本质上重载其实是不同的函数
纯虚函数:函数声明加=0。强制子类实现,不能实例化。
抽象类:包含纯虚函数的类,强制子类实现,不能实例化。
更为具体的,看下面这个例子:
#include<iostream>
using namespace std;
class 族谱 {
public:
virtual void 说两句() = 0;//纯虚函数,有纯虚函数不能实例化
void 属性() { cout << "I am ZUPU"<<endl; }
};
class 爸爸 :public 族谱 {
public:
virtual void 说两句() { cout << "我是爸爸" << endl; };
void 属性() { cout << "I am BABA"; }
};
class 你 :public 爸爸 {
public:
virtual void 说两句() { cout << "我是孙砸" << endl; };
void 属性() { cout << "I am SUNZEI"; }
};
int main() {
//族谱 族谱;//报错,因为抽象类不能实例化
爸爸 爸爸;
你 你;
族谱 *p1 = &爸爸;
族谱 *p2 = &你;
cout << "====多态=====" << endl;
p1->说两句();
p2->说两句();
cout << "====没virtual=====" << endl;
p1->属性();
p2->属性();
system("pause");
}
其中多态在C++里是通过虚函数来实现的,主要实现的功能是继承里父类的指针调用子类的功能函数。
覆盖:覆盖虚函数才能实现多态。覆盖普通函数并不能实现多态…
重载:和多态没有半毛钱关系,本质上重载其实是不同的函数
纯虚函数:函数声明加=0。强制子类实现,不能实例化。
抽象类:包含纯虚函数的类,强制子类实现,不能实例化。
更为具体的,看下面这个例子:
#include<iostream>
using namespace std;
class 族谱 {
public:
virtual void 说两句() = 0;//纯虚函数,有纯虚函数不能实例化
void 属性() { cout << "I am ZUPU"<<endl; }
};
class 爸爸 :public 族谱 {
public:
virtual void 说两句() { cout << "我是爸爸" << endl; };
void 属性() { cout << "I am BABA"; }
};
class 你 :public 爸爸 {
public:
virtual void 说两句() { cout << "我是孙砸" << endl; };
void 属性() { cout << "I am SUNZEI"; }
};
int main() {
//族谱 族谱;//报错,因为抽象类不能实例化
爸爸 爸爸;
你 你;
族谱 *p1 = &爸爸;
族谱 *p2 = &你;
cout << "====多态=====" << endl;
p1->说两句();
p2->说两句();
cout << "====没virtual=====" << endl;
p1->属性();
p2->属性();
system("pause");
}
相关文章推荐
- 多态,虚函数,纯虚函数,抽象类的相关问题(c++面试常见题目)
- 关于基类、派生类、对象、指针和虚函数、多态、 静态绑定、 动态绑定 纯虚函数、抽象类
- c++虚函数,纯虚函数,抽象类,覆盖,重载,隐藏
- 多态,虚函数,纯虚函数,抽象类
- C++中的多态-虚函数-纯虚函数-抽象类
- 23、C++多态(虚函数 纯虚函数 抽象类 )
- 【转】虚函数-虚表-虚指针-多态性-如何实现多态-纯虚函数-抽象类-转
- 多态,虚函数,纯虚函数 , 虚析构函数 ,抽象类
- c++(一) 类 对象 重载 继承 多态 构造函数 虚函数 覆盖 纯虚函数等
- 【转载】多态,虚函数,纯虚函数,抽象类
- C++中抽象类、虚函数和纯虚函数与Java中相关概念的对比
- A.4-继承,方法重写(覆盖)(override),虚函数(virtaul)和多态,抽象方法和抽象类abstract,密封类(sealed)和密封方法,常量的定义(const)
- C++ 虚函数、纯虚函数、继承、虚表、多态原理相关知识点总结
- C++继承、虚函数、纯虚函数、多态、覆盖、重载、隐藏、引用等常用概念
- C++多态、虚函数、纯虚函数、抽象类
- 抽象类、虚函数、纯虚函数、接口、多态、继承(多位置转载外加自己的一点代码)
- C++中如何实现像Java中接口功能--C++抽象类(纯虚函数,虚函数)
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- 虚函数,纯虚函数和抽象类
- 抽象类、纯虚函数、虚函数