换老师讲C++。
C++最主要的三大特性:封装、继承、多态。
封装指把数据和行为组合在对象里。在C语言中描述一个对象的数据、属性可以用结构体封装,但是每个对象的行为、方法只能另外单独定义的一个函数(使用函数指针、宏去模拟C++类,语义上看不伦不类),函数与数据的联系只能通过指针,用指针传过来传过去,传了错误的指针也不知道。况且人类的正常思维来看,一个对象的方法、属性本身就是一体的,分离出来的话不符合人类思考方式。所以C++从语法上支持了类的概念,把这些东西封装在一起,让编写程序更适合人类思考问题的方式。
既然可以把现实中的事物用对象来表示,自然的,事物与事物的关系、从属等等当然也要有其表现形势,继承就是其中之一。
所谓多态指拥有多态的类对象,都有一个共同的抽象基类(只有虚函数),通过重载其虚函数实现函数的多态。这些都是语法上看似高端的东西,说穿了就是一个类对象基址存放着一个虚函数表指针,这些所谓多态函数或者叫方法都是在运行时调用表里对应项的虚函数指针。
C++对C扩展的几个部分:
1. 新增布尔类型(bool),布尔类型大小1字节。
2. 定义变量不必强制集中在函数头部。
3. 名字空间作用域与类域。定义一个命名空间用namespace关键字,花括号内的一切都属于该命名空间,而且命名还可以在不同地方分段定义,编译器最终会将它们合并。在文件中如果想使用命名空间里的东西,一直接空间名+作用域符+引用名,二先声明一次using 空间名+作用域符+引用名,以后直接使用引用名,三声明使用整个命名空间using namespace 空间名,空间里所以东西都可直接引用了。
编译器查找变量或函数的规则是,从内到外,找到则使用,找不到就报错。