无论C#, C++, 都必须说明白的是:
1 基本数据类型:[有符号,无符号]
integer[char], string, float
这些也是"现实世界"中的抽象描述,例如表示人年龄的用integer,范围1~100/150;
人名字的用string;
金钱的用float
C#: int, string, float
c++: int, string, float
特殊的2个,表示所有类型的object[MFC-CObject, c#-object],
void[特殊环境下,例如表示return]
容器:
可扩展数组, 键值对字典
目的:方便处理对基本、自定义类型的集合处理
c#:List, Dictionary
c++: vector, list, map
2 自定义数据类型
对一些更复杂的type的描述,用上述的基本类型是不方便表达的, 怎么解决?语言本身留给用户[程序员]的扩展空间来解决
例如用class, struct, enum表达自定义类型
对于动物,植物,可以用抽象类定义它的动作或属性; 对具体的dog再具体实例化、或者继承处理
3 GP的思想,compile时期代码膨胀技术[可以用模板偏特化解决]
template技术,在.Net2.0已经提供支持
c++下的STL就是GP的一个具体实现
4 涉及到的面向对象的概念
继承[派生],virtual[运行时刻bind], override,封装[public,private]
public:接口,别人能访问、使用的。
继承,不是为了节省程序员的代码,而是为了更明白的表达一个体系的意义,千万不要把大量代码堆积到上面
abstract public尽量对外提供空的声明而已,让下面具体实现之则可。
5 系统架构、扩展、维护
是一个重构的过程,必须经历"几代"的重构才能成熟。
1 基本数据类型:[有符号,无符号]
integer[char], string, float
这些也是"现实世界"中的抽象描述,例如表示人年龄的用integer,范围1~100/150;
人名字的用string;
金钱的用float
C#: int, string, float
c++: int, string, float
特殊的2个,表示所有类型的object[MFC-CObject, c#-object],
void[特殊环境下,例如表示return]
容器:
可扩展数组, 键值对字典
目的:方便处理对基本、自定义类型的集合处理
c#:List, Dictionary
c++: vector, list, map
2 自定义数据类型
对一些更复杂的type的描述,用上述的基本类型是不方便表达的, 怎么解决?语言本身留给用户[程序员]的扩展空间来解决
例如用class, struct, enum表达自定义类型
对于动物,植物,可以用抽象类定义它的动作或属性; 对具体的dog再具体实例化、或者继承处理
3 GP的思想,compile时期代码膨胀技术[可以用模板偏特化解决]
template技术,在.Net2.0已经提供支持
c++下的STL就是GP的一个具体实现
4 涉及到的面向对象的概念
继承[派生],virtual[运行时刻bind], override,封装[public,private]
public:接口,别人能访问、使用的。
继承,不是为了节省程序员的代码,而是为了更明白的表达一个体系的意义,千万不要把大量代码堆积到上面
abstract public尽量对外提供空的声明而已,让下面具体实现之则可。
5 系统架构、扩展、维护
是一个重构的过程,必须经历"几代"的重构才能成熟。