【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. }
目录
相关文章
|
1月前
|
C++
C++一分钟之-虚函数与抽象类
【6月更文挑战第21天】在C++中,虚函数与抽象类是多态的基础,增进类间耦合与灵活性。虚函数实现动态绑定,抽象类定义不可实例化的接口。关键点包括:记得使用`virtual`,避免滥用虚函数,确保派生类实现纯虚函数。抽象类不能直接实例化,派生类必须实现所有纯虚函数。通过实例代码学习和实践,能更好地掌握这些概念以优化代码设计。
27 2
|
2月前
|
C++
C++程序中的抽象类
C++程序中的抽象类
31 0
|
2月前
|
C++
C++程序中的纯虚函数
C++程序中的纯虚函数
27 0
|
2月前
|
存储 编译器 C语言
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(下)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
39 1
|
2月前
|
存储 编译器 Linux
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(中)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
46 1
|
2月前
|
C++
c++接口(抽象类)
c++接口(抽象类)
33 1
|
2月前
|
Serverless C++
C++多态性、虚函数、纯虚函数和抽象类知识网络构造
C++多态性、虚函数、纯虚函数和抽象类知识网络构造
|
2月前
|
C++ 编译器 存储
|
2月前
|
数据安全/隐私保护 C++
C++中的虚函数、纯虚函数与函数重写的技术性探讨
C++中的虚函数、纯虚函数与函数重写的技术性探讨
37 0
|
2月前
|
编译器 C语言 C++
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(上)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
23 0