C/C++基本语法,入门及提高(3)
来源:互联网 发布:linux高性能计算集群 编辑:程序博客网 时间:2024/06/08 02:11
> 虚函数和多态,封装与继承
多态就是要通过基类接口来使用派生类,如果基类还需要知道派生类的信息……
C++ 语言中自带面向对象支持,如封装、继承、多态等面向对象的基本特征。 C 原本是面向过程的语言,自身没有内建这些特性,但我们还是可以利用 C 语言本身已有的特性来实现面向对象的一些基本特征。接下来我们就一一来细说封装、继承、多态、纯虚类等面向对象特性在 C 语言中如何实现,并且给出实例。
封装在 C++ 语言中有 protected 、 private 关键字在语言层面上支持,而 C 语言中没有这些。 C 有结构体( struct ),其实可以实现封装和隐藏。虚函数是 C++ 里面最有意义的一个特性,是多态的基础.在 C 中,用结构体内的函数指针和 C++ 的成员函数对应, C 的这种方式,所有函数都天生是虚函数(指针可以随时修改哦)。
常说的重载大概有三种含义:
其一,函数重载,指函数名字一样,参数个数、类型不一样的函数声明和实现。由于 C 编译器的缘故,不支持。不过这个影响不大。
其二,重定义或者说覆盖,指派生类中定义与基类签名一样(名字、返回值、参数完全一样)的非虚函数,这样派生类的中的函数会覆盖基类的同签名函数,通过成员操作符访问时无法访问基类的同签名函数。
其三,虚函数重写,指在派生类中实现基类定义的虚函数或纯虚函数。虚函数是实现多态的关键,可以在结构体中使用函数指针来表达,但要完全实现,也很麻烦。
多态就是要通过基类接口来使用派生类,如果基类还需要知道派生类的信息……
C++ 语言中自带面向对象支持,如封装、继承、多态等面向对象的基本特征。 C 原本是面向过程的语言,自身没有内建这些特性,但我们还是可以利用 C 语言本身已有的特性来实现面向对象的一些基本特征。接下来我们就一一来细说封装、继承、多态、纯虚类等面向对象特性在 C 语言中如何实现,并且给出实例。
封装在 C++ 语言中有 protected 、 private 关键字在语言层面上支持,而 C 语言中没有这些。 C 有结构体( struct ),其实可以实现封装和隐藏。虚函数是 C++ 里面最有意义的一个特性,是多态的基础.在 C 中,用结构体内的函数指针和 C++ 的成员函数对应, C 的这种方式,所有函数都天生是虚函数(指针可以随时修改哦)。
常说的重载大概有三种含义:
其一,函数重载,指函数名字一样,参数个数、类型不一样的函数声明和实现。由于 C 编译器的缘故,不支持。不过这个影响不大。
其二,重定义或者说覆盖,指派生类中定义与基类签名一样(名字、返回值、参数完全一样)的非虚函数,这样派生类的中的函数会覆盖基类的同签名函数,通过成员操作符访问时无法访问基类的同签名函数。
其三,虚函数重写,指在派生类中实现基类定义的虚函数或纯虚函数。虚函数是实现多态的关键,可以在结构体中使用函数指针来表达,但要完全实现,也很麻烦。
阅读全文
0 0
- C/C++基本语法,入门及提高(3)
- C/C++基本语法,入门及提高(1)
- C/C++基本语法,入门及提高(2)
- C++基本语法,入门及提高(4)
- C++基本语法,入门及提高(5)
- C++基本语法,入门及提高(6)
- C#-基本语法(1)
- C语言基本语法
- Object-c基本语法
- Objective-c基本语法
- Objective C基本语法
- Objective-C基本语法
- C 基本语法
- C#-基本语法
- C 基本语法
- 【C#】 基本语法
- Objective-C语法入门
- Objective-C语法入门
- CSS 单行或多行文本溢出显示省略号
- The file “xxx.xcconfig” couldn’t be opened because there is no such file?
- Hibernate 一级缓存,二级缓存,查询缓存
- 编译工程报错:no such file or directory: 'xxx'?
- 【Setting】MySQL环境搭建
- C/C++基本语法,入门及提高(3)
- 封装一个通用的 okhttp 库
- Javascript第二天学习总结
- stm32f103 RCC_MCOConfig函数
- [Leetcode] 82, 61, 19
- jQuery
- 我想更深入c++
- Whistle 在本机编辑返回报文之后请求未走本机
- HDU2122