【C++】 --- 纯虚函数和抽象类

简介: 【C++】 --- 纯虚函数和抽象类

纯虚函数的定义: virtual 返回类型 函数名(形参) = 0

含有纯虚函数的类叫抽象类
抽象类的特点:不能用抽象类去实例化对象
抽象类的作用:提供一个统一的接口,让子类去实现,子类实现之后才可以实例化对象

 

1. /**
2. 纯虚函数的定义: virtual 返回类型 函数名(形参) = 0
3. 含有纯虚函数的类叫抽象类
4. 抽象类的特点:不能用抽象类去实例化对象
5. 抽象类的作用:提供一个统一的接口,让子类去实现,子类实现之后才可以实例化对象
6. */
7. 
8. class figure     //抽象类
9. {
10. public:
11.   virtual void getS() = 0;    //纯虚函数
12. 
13. protected:
14. private:
15. 
16. };
17. 
18. class Circle : public figure
19. {
20. public:
21.   Circle(int a)
22.   {
23.     this->a = a;
24.   }
25.   virtual void getS()
26.   {
27.     cout << "the area of the circle is " << 3.14*a*a << endl;
28.   }
29. 
30. protected:
31. private:
32.   int a;
33. };
34. 
35. class Triangle : public figure
36. {
37. public:
38.   Triangle(int a, int b)
39.   {
40.     this->a = a;
41.     this->b = b;
42.   }
43.   virtual void getS()
44.   {
45.     cout << "the area of the triangel is " << a*b/2 << endl;
46.   }
47. 
48. protected:
49. private:
50.   int a;
51.   int b;
52. };
53. 
54. 
55. void objplay(figure * base)
56. {
57.   base->getS();   //会发生多态
58. }
59. 
60. int main(void)
61. {
62.   //figure F; //抽象类不能实例化对象
63.   //figure *base = NULL;
64. 
65.   Circle c1(10);
66.   Triangle t1(10,20);
67. 
68.   objplay(&c1);
69.   objplay(&t1);
70. 
71.   system("pause");
72.   return 0;
73. }
相关文章
|
C++
C++一分钟之-虚函数与抽象类
【6月更文挑战第21天】在C++中,虚函数与抽象类是多态的基础,增进类间耦合与灵活性。虚函数实现动态绑定,抽象类定义不可实例化的接口。关键点包括:记得使用`virtual`,避免滥用虚函数,确保派生类实现纯虚函数。抽象类不能直接实例化,派生类必须实现所有纯虚函数。通过实例代码学习和实践,能更好地掌握这些概念以优化代码设计。
144 2
|
6月前
|
存储 编译器 C++
【c++】多态(多态的概念及实现、虚函数重写、纯虚函数和抽象类、虚函数表、多态的实现过程)
本文介绍了面向对象编程中的多态特性,涵盖其概念、实现条件及原理。多态指“一个接口,多种实现”,通过基类指针或引用来调用不同派生类的重写虚函数,实现运行时多态。文中详细解释了虚函数、虚函数表(vtable)、纯虚函数与抽象类的概念,并通过代码示例展示了多态的具体应用。此外,还讨论了动态绑定和静态绑定的区别,帮助读者深入理解多态机制。最后总结了多态在编程中的重要性和应用场景。 文章结构清晰,从基础到深入,适合初学者和有一定基础的开发者学习。如果你觉得内容有帮助,请点赞支持。 ❤❤❤
757 0
|
C++
C++程序中的抽象类
C++程序中的抽象类
201 0
|
C++
C++程序中的纯虚函数
C++程序中的纯虚函数
149 0
|
Serverless C++
C++多态性、虚函数、纯虚函数和抽象类知识网络构造
C++多态性、虚函数、纯虚函数和抽象类知识网络构造
|
存储 编译器 C语言
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(下)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
145 1
|
存储 编译器 Linux
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(中)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
130 1
|
C++
c++接口(抽象类)
c++接口(抽象类)
125 1
|
C++ 编译器 存储
|
数据安全/隐私保护 C++
C++中的虚函数、纯虚函数与函数重写的技术性探讨
C++中的虚函数、纯虚函数与函数重写的技术性探讨
198 0