今天拿起Primer来读,虽说是入门书籍,但是才读了两章就发现有不少收获,今天下午的收获主要是利用C++解决未知数目的输入和const引用的一些注意问题。先说下C++,每门语言都会有自己的特色,从而可能相较而言更适用于某个领域或工作。但是每种高级语言共通的都会包含一些共性:数据内置类型、表达式和语句、变量、控制结构以及函数。在这些基本的功能之上,扩展增强的部分一个种方式提供给程序猿自定义数据结构的能力,另一种则是提供强大的库支持。C++提供了类机制作为自定义类型,提供了STL加速开发的效率。自己一直用C来写程序,再读Prime就更能感觉出C与C++的不同,心中也开始有点小惊喜。 第一个程序来说明如何提供未知数目的输入,比如用户输入数字,然后给出其和。问题的关键在于如何确认用户输入结束呢?如果用C来实现的话,关键代码就是这样: while (getchar() != EOF || getchar() != '\n' || getchar() != '\r') { //处理过程 } 上述语句是针对char类型的,如果是其他类型还需要进行修改。但是在C++中可以直接利用istream对象作为while()的条件就可以了,根据定义的变量类型可以适用于各种常见类型。 点击(此处)折叠或打开
第二个程序是关于引用需要注意的一些问题。引用相当于对象的一个别名,名称不同,但实际指向同一个内存空间。所以定义时必须进行初始化绑定目标对象,普通的引用必须用同类型的对象初始化,不能使用字面值常量,如42等: int num = 10; int r_num = num; int r_num = 10; //Error! 对于一个常变量来说,不能使用普通引用绑定,因为一旦如此会造成通过引用修改常变量的可能,所以编译器会自动检查: const int num = 100; int &r_num = num; //Error! 对于常引用(即绑定到一个常对象的引用),引用和绑定的目标自然都是不可修改的: const int num = 100; const int &r_num = num; const int &r_num = 100; //const引用可以用字面值常量初始化了 常引用还可以绑定不同类型的对象: double d_num = 10000; const int& r_num = d_num; 为什么呢?因为编译器其实做了以下处理: double d_num = 10000; int tmp = d_num; const int& r_num = d_num; 因此常引用可以绑定不同的类型对象。当然一般来说为了避免出错,凡是const声明的对象都不要试图去修改它就可以了。特别注意,const对象一旦初始化完成是不能修改的!C++博大精深,自己还有很长的路要走 点击(此处)折叠或打开
|
|