(1)C语言是面向过程的程序设计,主要考虑如何通过一个过程,对输入进行处理得到一个输出,
C++是面向对象的程序设计,对于C++,首先考虑的是如何构造一个对象模型,让这个模型配合对应问题,这样可以获取对象信息状态得到输出。
(2)C++比C的增强点
-
- 命名空间
- 变量检测加强
int g_var; int g_var =210; int main(int argc,char *argv[]){ printf("g_var = %d\n",g_var); return 0; }
在C语言中,输出正常:210;
在C++中,运行出错,变量重定义;
-
- struct加强:C语言struct定义了一组变量的合集,C编译器不认为这是一种新的类型;C++编译器中的struct是一个新类型的定义声明;
struct Student{ char name[100]; int age; } int main(int argc,char *argv[]){ Student sl={"wang",1}; //C语言中必须前面加上 struct 关键字; //struct Student sl={"wang",1}; // struct Student s2={"wang2",2}; Student s2={"wang2",2}; return 0; }
- struct加强:C语言struct定义了一组变量的合集,C编译器不认为这是一种新的类型;C++编译器中的struct是一个新类型的定义声明;
面向对象:把数据和对数据的操作方法放在一起,做成一个相互依靠的整体,称之为对象,对同类对象抽象出共同特性,类中大多数数据只能用本类的方法进行处理;
封装:将一类事物的属性和行为抽象为一个类,使属性私有化,行为公开化,提高数据隐蔽性,复用性高。封装隐藏了类的实现细节和成员数据,实现了代码模块化,如类里面的 private 和public;
继承:进一步将属性和行为抽象为一个父类,而每一个子类拥有父类的行为和属性也有自己的行为和属性。继承使得子类可以复用父类的成员和方法,实现了代码重用;
多态:是“一个接口,多个实现”,通过父类调用子类的成员,实现了接口重用,如父类的指针指向子类的对象。
C++是不是类型安全的?
不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)