C++的3大特性即多态、继承、封装。c++不完全是一种对象设计语言,按inside c++ object model上的划分,可分为三大部分:数据操作部分(过程编程与c相同)、对象编程、泛型编程(参数类型化思想)。
一、(c)struct、(c++)struct、class区别
1、(c)struct和class
1)、struct只是一种数据类型,不能使用面向对象编程OOP
2)、struct不能包含成员函数、不能继承、不能实现多态(即面向对象的行为)
3)、结构是值类型,值类型分配在堆栈(值类型作为临时变量,存储在栈中,作为成员变量,存储在堆中)上。而类是引用类型,分配在堆上(c#中)。
结构是隐式的sealed(不能继承和被继承,重写),但是可以继承接口。
c中只声明,不定义以便在接口中隐藏结构的具体实现的方法:
//在接口.h文件中声明
typedef struct Aaatag Aaa;
Aaa* GetAaa();
bool SetAaa(Aaa*);
//在实现文件.c中定义
struct Aaatag
{
int i;
float j;
.....
};
2、(c++)struct和class
C++中struct主要是为了和c中兼容。struct可看作(习惯)一种数据结构的实现体(变量叫数据),class作为对象的实现体(变量叫成员),实际无区别。
struct里面只包含数据成员而不包含成员函数,这是一个编程习惯。
1)、默认继承权限,成员的默认访问权限不同。
2)、关键字“struct”不用于定义模板参数
3)、可以{}的方式来赋初值。但只能用在简单的数据结构上,而不应该放在对象上。
加入一个构造函数或是一个虚函数会使struct更体现出一种对象的特性,而使此{}操作不再有效。
加入一个普通的成员函数,{}依旧可用。可以将普通的函数理解成对数据结构的一种算法,这并不打破它数据结构的特性。
原因:加上一个public,class也是能用{},和struct毫无区别。