雪白丰腴做美妇网站,网站后台建设编辑器,手机app可以做网站吗,html代码自动生成学习一门语言#xff0c;就像在一座陌生的城市旅游#xff0c;第一步应该找一张这座城市的地图#xff0c;对这座城市有个整体的了解#xff0c;然后寻找自己的目的地#xff0c;不至于迷失方向。 一句话#xff1a;先整体#xff0c;再局部。
一.从面向过程到面向对象… 学习一门语言就像在一座陌生的城市旅游第一步应该找一张这座城市的地图对这座城市有个整体的了解然后寻找自己的目的地不至于迷失方向。 一句话先整体再局部。
一.从面向过程到面向对象 1.1 面向过程的困境 当软件规模超过一定的尺度后采用结构化程序设计其开发和维护就越来越难控制。其根本的原因就在于面向过程的结构化程序设计的方法与现实世界包括主观世界和客观世界往往都不一致结构化程序设计的思想往往很难贯彻到底。 在结构化程序设计中采用的是“自顶向下逐步细化 divide and conquer , stepwise refinement”的思想。具体操作方法是模块化是按功能来分的所以也称功能块。在 C语言中称为一个函数一个函数解决一个问题即实现一个功能或一个操作。 在模块化的思想中已经出现了封装的概念这个封装是把数据封装到模块中即局部变量。但这是很不彻底的因为模块是功能的抽象而数据则是具有其个性的一旦发生那怕是一点变化抽象的功能模块就不再适用了。可维护性差成了制约结构化程序设计应用的瓶颈。
1.2 面向对象 对象的概念是面向对象技术的核心所在。 面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。 正因为对象是对现实的模拟所以可更好地解决现实问题。 如下图所示。现实世界中的实体可以抽象出类别的概念。对应于计算机世界就有一个类class的概念因为类是一个抽象的概念的对应体所以计算机不给它分配内存只给对象分配内存。
二.面向对象语言的四大特征 面向对象语言的特征可理解为类的特征。
2.1 抽象 抽象是从众多的事物中抽取出共同的、本质性的特征而舍弃其非本质的特征的过程。 例如对现实中的银行柜员进行抽象映射到计算机成为一个类计算机将类实例化为对象运行程序时就模拟了现实的银行柜员。 即是类是对客观世界的抽象。
2.2 封装 封装 Encapsulation是面向对象程序设计最基本的特性它把数据属性和函数操作合成一个整体。 即是类将“数据”和“函数”封装在一起。
2.3 继承 继承 inheritance机制是面向对象程序设计使代码可以复用的最重要的手段它允许程序员在保持原有类特性的基础上进行扩展增加功能。这样产生新的类称派生类。继承呈现了面向对象程序设计的层次结构。体现了由简单到复杂的认识过程。 即是类具有可重用性。
2.4 多态 多态性 polymorphism多态性是考虑在不同层次的类中以及在同一类中 同名的成员函数之间的关系问题。 1 编译时的多态性 函数的重载运算符的重载属于编译时的多态性。 2 运行时的多态性 以虚基类为基础的运行时的多态性是面向对象程序设计的标志性特征。 体现了类推和比喻的思想方法。
三.命名空间的引入
3.1 为什么引入 命名空间是为了解决 C中的变量、函数的命名冲突而引入的一种机制其主要思路是将变量定义在一个不同名字的命名空间中。 命名空间就像文件夹它包含了若干个文件类。 文件是把程序分块的物理方法命名空间则是把程序分块的逻辑方法。 注意 MFC 中并没有使用命名空间但是在.NET 框架、 MC和 C/CLI 中都大量使用了命名空间。
3.2 语法格式 定义一个命名空间的语法如下
namespace 命名空间名
{命名空间声明内容
}
3.3 命名空间成员的使用
3.3.1 有名空间 3.3.1.1 声明单个成员 using namespace_name::name; 例如
using std::cin;
using std::string;
3.3.1.2 声明所有成员 using namespace_name; 例如
using namespace std;
3.3.1.3 直接引用 语法格式为
命名空间名::类/对象 例如
std::cout
3.3.2 无名空间
1.只能在当前编译单元中使用在当前编译单元是全局的 例如
namespace
{int a;int func(){couthelloendl;}
};
2.嵌套在另一个命名空间内部。访问时需使用外围的命名空间的名字来限定
#includeiostreamusing namespace std;namespace space0
{namespace{void func(void){coutspace0,namelessendl; }}}int main(void)
{space0::func(); return 0;
} 3.4 命名空间的别名 C引入命名空间主要是为了避免成员的名称冲突。如果每个程序员都给自己的命名空间取简短的名称那么这些命名空间本身也可能发生名称冲突如果取很长的名称那么使用起来很不方便。 C为此提供了一种解决方案命名空间别名。 格式如下
namespace 别名命名空间名; 例如
namespace CDMACode_Division_Multiple_Access; 一个命名空间可以有多个别名这些别名以及原来的名称是等价的可以互换使用。