C++学习要点

C++是一门极其复杂的语言,说她复杂,因为她包含了最多的程序设计范式,过程性,面向对象型,抽象数据类型,模板泛型,c++同时具有stl一个庞大而通用的标准库,更有boost这样的全能式类库,现在我们就来揭开c++神秘的面纱,虽然触及的是冰山一角,但我们最好也可以触其本质,掌握c++的使用方式#includeconst int NUM=100 //#define NUM 100mint ×p=new int[NUM]for(int i=0;i<100;++i) p[i]=rand();sort(p,p+100);copy(p,p+100,ostream_iterator(cout," "));delete []p;再上述代码中,我们包含了stl的其中一个模块-算法,algorithm头文件,这个头文件包含了非常常用的算法-泛型函数,可以看德国人所写的,侯捷先生译的c++标准库,在上述代码中我们看到了一个const关键字,类似c语言的宏,然后我们使用了new关键字来开辟一段内存,不要忘记成对编码的要点,new与delete要成对使用,在随后的[0,99]循环中,我们给这块400个byte的内存填满了rand()随机值,然后使用了sort泛型函数,这个函数是模板函数,使用了快速排序和随机找寻中间值的优化,具体实现可以查阅分而治之和排序算法,随后调用c++algorithm中的copy函数,可以将一段数据拷贝到另一段数据,将我们创建的内存段的已排好数据拷贝到输出流中。上述代码就是过程式编程,所谓过程式就是顺序执行,代码一行一行向下执行。class CDigite{public:CDigite():m_digite(0),m_strdigite("0"),m_xiaoshu(false),m_fushu(false){}void append(char n);//将'0-9','.'写入这个数字类void convertdtostr();//将数字转换为字符串类型void isfushu();void isxiaoshu();void setzhengfu();void setvalue(double value);pair getvalue();protected:double m_digite;string m_strdigite;bool m_xiaoshu;bool m_fushu;};这是一个C++类,在语法上由class+类名+大括号+分号组成,其中的数据类型是保护类型,为的是继承考虑,可以被后续的类使用,函数接口是由public组成的,该类的作用是在一个Windows计算器程序中,逐一读入控件输入的数字,组成为完整的数字double类型,和表示此数字的string类型,如double 100012.2222,string“100012.2222”,在这个类中我们使用了抽象数据类型,抽象数据类型就是由数据类型和函数一起组成的代码,就是类,这个类可以先在console模式下写成,后在windows型程序中使用,这种模块型程序设计我们将难度逐渐减弱。那么什么是面向对象呢,面向对象是由一个一个类继承而形成的,面向对象必须要有继承,如class Point{public:virtual int weight(){return x+y;}protected:int x , y;};class Point3d:public Point{public:virtual int weight(return x+y+z;)protected:int z;};在上述代码中,还包含了虚函数,那么什么是虚函数呢,被继承的类可以重新改写父类的函数。最后一个编程范式是泛型程序设计,泛型程序设计可以在编译时期实例化具体类型,而在编写代码时不需要写出具体类型,如templateT sum(const T& lhs,const T& rhs){return lhs+rhs;}如上述代码,只要是有+运算符的类型都可以调用该函数,注意我们要const T&类型,可以直接引用而不是调用拷贝构造函数,具体的更多模板的使用,可以看stl以及其实现

猜你喜欢

转载自blog.csdn.net/anzijian1993/article/details/38167937
今日推荐