VC++6.0之标准using namespace std

最近一直在看由电子工业大学出版的吕老师编写的c《++语言程序设计(第三版)》,其中的程序代码书写我并不知道有一定的缺陷,我一直沉浸在他的书中,竟然没有再去看看其他的版本,原来新的C++已经明确提出不提倡用的一些规定这本书还在用,也是我在最近的做题陷入了一定的困境,很郁闷,后来在标准的习题中了解了一些编程代码书写规范。今天就好好学习一下标准的代码书写。

先来看看旧版的C++编程风格(就是目前我学的这本书)

<font size="4"><span style="color:#ff0000;">#include <iostream.h>//旧版的C++头文件包含命令</span>class MyClass //定义的一个类{ public://类中的公有成员MyClass(int i)//定义的带一个参数的构造函数{ value = i; cout << "Constructor called." << endl; }//在类内的构造函数的函数体,调用一次将会输出一次int Max(int x, int y) { return x>y ? x : y; }//定义的重载函数是类的成员函数int Max(int x, int y, int z) //类内定义的重载函数{if (x > y)return x>z ? x : z;elsereturn y>z ? y : z;}int GetValue() const { return value; }//定义的一般的成员函数~MyClass() { cout << "Destructor called." << endl; }//类内定义的析构函数,调用一次将输出一次private://类中的私有成员,只有成员函数才可以访问int value;};<span style=""><span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;">void main()//返回值类型为空的主函数</span></span></span>{MyClass obj(10);//定义的一个带参数的对象,将使用构造函数对其进行初始化cout<<"The value is "<<obj.GetValue()<< endl;//通过对象引用一般的成员函数cout << "Max number is " << obj.Max(10,20) << endl;//通过对象引用重载函数}</font>

这种的编程风格也是我一直在使用的,原来存在局限性,也是将要被替代的,虽说在VC++6.0中依然可以运行,但是在其他的编程软件中就不再适用了,例如VS2010等等。

再来看看新的C++的编程的书写:

<span style="color:#ff0000;">#include <iostream>//新版的C++头文件包含命令</span><span style="color:#ff0000;">using namespace std;</span>class MyClass //定义的一个类{ public://类中的公有成员MyClass(int i)//定义的带一个参数的构造函数{ value = i; cout << "Constructor called." << endl; }//在类内的构造函数的函数体,调用一次将会输出一次int Max(int x, int y) { return x>y ? x : y; }//定义的重载函数是类的成员函数int Max(int x, int y, int z) //类内定义的重载函数{if (x > y)return x>z ? x : z;elsereturn y>z ? y : z;}int GetValue() const { return value; }//定义的一般的成员函数~MyClass() { cout << "Destructor called." << endl; }//类内定义的析构函数,调用一次将输出一次private://类中的私有成员,只有成员函数才可以访问int value;};<span style="color:#ff0000;">int main()//返回值类型为整型的主函数</span>{MyClass obj(10);//定义的一个带参数的对象,将使用构造函数对其进行初始化cout<<"The value is "<<obj.GetValue()<< endl;//通过对象引用一般的成员函数cout << "Max number is " << obj.Max(10,20) << endl;//通过对象引用重载函数<span style="color:#ff0000;">return 0;</span>}

原来这才是与时俱进的新C++编程代码的规范书写,那就来看看两者的区别:

1.头文件包含命令的不同,旧版的为#include <iostream.h>当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现。而新C++的#include <iostream>当使用< iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。

#include <iostream.h> using namespace std; 则出错 所以 要么写成#include <iostream >using namespace std; 要么写成 #include <iostream.h> 当然最好是前种

2.主函数的返回值类型的不同,旧版的为void main(),而新C++为int main(),严格的还要在主函数的函数体最后一行加上return 0;要不然会出现警告错,虽然不影响程序的运行,但是按良好的编程风格来说加上是最好的。

两者的区别还有:

1.旧的C++头文件是官方所反对使用的(即,明确列出不再支持),但旧的C头文件则没有(以保持对C的兼容性)。旧的C++头文件名如<iostream.h>将会继续被支持,尽管它们不在官方标准中。这些头文件的内容不在名字空间std中。新的C++头文件如<iostream>包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。)

2.

由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:

(oct 八进制 dec 十进制 hex 十六进制)

(1)、直接指定标识符。例如std::ostream而不是ostream。完整语句如下:

std::cout << std::hex << 3.4 << std::endl;

(2)、使用using关键字。

using std::cout;

using std::endl;

以上程序可以写成

cout << std::hex << 3.4 << endl;

(3)、最方便的就是使用using namespace std;

例如:

#include <iostream>

using namespace std;

这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写:cout << hex << 3.4 << endl;

得意时应善待他人,因为你失意时会需要他们

VC++6.0之标准using namespace std

相关文章:

你感兴趣的文章:

标签云: