c语言是面向对象的编程语言吗,不支持面向对象的编程语言

首页 > 教育培训 > 作者:YD1662023-06-19 12:07:49

C语言中产生函数符号的规则是根据名称产生,这也就注定了c语言不存在函数重载的概念。而C 生成函数符号则考虑了函数名、参数个数、参数类型。需要注意的是函数的返回值并不能作为函数重载的依据,也就是说int sum和double sum这两个函数是不能构成重载的!

我们的函数重载也属于多态的一种,这就是所谓的静多态。

静多态:函数重载,函数模板

动多态(运行时的多态):继承中的多态(虚函数)。

使用重载的时候需要注意作用域问题:请看如下代码。

c语言是面向对象的编程语言吗,不支持面向对象的编程语言(9)

我在全局作用域定义了两个函数,它们由于参数类型不同可以构成重载,此时main函数中调用则可以正确的调用到各自的函数。

但是请看main函数中被注释掉的一句代码。如果将它放出来,则会提出警告:将double类型转换成int类型可能会丢失数据。

这就意味着我们编译器针对下面两句调用都调用了参数类型int的compare。由此可见,编译器调用函数时优先在局部作用域搜索,若搜索成功则全部按照该函数的标准调用。若未搜索到才在全局作用域进行搜索。

总结:C语言不存在函数重载,C 根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载。

c语言是面向对象的编程语言吗,不支持面向对象的编程语言(10)

7、const

C语言中被const修饰的变量不是常量,叫做常变量或者只读变量,这个常变量是无法当作数组下标的。然而在C 中const修饰的变量可以当作数组下标使用,成为了真正的常量,这就是C 对const的扩展。

C语言中的const:被修饰后不能做左值,可以不初始化,但是之后没有机会再初始化。不可以当数组的下标,可以通过指针修改。

简单来说,它和普通变量的区别只是不能做左值而已,其他地方都是一样的。

C 中的const:真正的常量。定义的时候必须初始化,可以用作数组的下标。const在C 中的编译规则是替换(和宏很像),所以它被看作是真正的常量。也可以通过指针修改。需要注意的是,C 的指针有可能退化成C语言的指针。比如以下情况:

c语言是面向对象的编程语言吗,不支持面向对象的编程语言(11)

这时候的a就只是一个普通的C语言的const常变量了,已经无法当数组的下标了。(引用了一个编译阶段不确定的值)

const在生成符号时,是local符号。即在本文件中才可见。如果非要在别的文件中使用它的话,在文件头部声明:externcosnt int data = 10;这样生成的符号就是global符号。

总结:C中的const叫只读变量,只是无法做左值的变量;C 中的const是真正的常量,但也有可能退化成c语言的常量,默认生成local符号。

c语言是面向对象的编程语言吗,不支持面向对象的编程语言(12)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.