前言

学习 C++的面向对象编程,对学习 Qt 有很大的帮助

一、 C++的输入输出方式



效率上,肯定是 C 语言的 scanf 和 printf 的效率高,但是没有 C++中的 cin 和 cout 使用方便。

1.cout语法形式

cout<<x<<endl;
cout<<x<<y; // endl 可流省略,只是一个换行的效果

x 可以是任意数据类型,甚至可以写成一个表达式,这比 C 语言需要指定数据类型方便多了,endl 指的是换行符,与 C 语言的“\n”效果一样。

2.cin语法形式

cin>>x;
cin>>x>>y;

x 可以是任意数据类型。

3.C++之命名空间 namespace
我们已经使用过命名空间,如using namespace std;
要注意第 1 行,不能写成 iostream.h,有.h 的是非标准的输入输出流,c 的标准库。无.h 的是标准输入输出流就要用命名空间。
using 是编译指令,声明当前命名空间的关键词。可以从字面上理解它的意思,using 翻译成使用。这样可以理解成使用命名空间 std。因为 cin 和 cout 都是属于 std 命名空间下的东西,所以使用时必须加上 using namespace std;这句话。cin 和 cout 可以写 std::cin 和 std::cout,“::”表示作用域,cin 和 cout 是属于 std 命名空间下的东西,这里可以理解成 std 的 cin 和 std 的 cout

为什么要使用命名空间?
有些名字容易冲突,所以会使用命名空间的方式进行区分,具体来说就是加个前缀。
比如C++ 标准库里面定义了 vector 容器,您自己也写了个 vector 类,这样名字就冲突了。于是标准库里的名字都加上 std:: 的前缀,您必须用 std::vector 来引用。同理,您自己的类也可以加个自定义的前缀。但是经常写全名会很繁琐,所以在没有冲突的情况下您可以偷懒,写一句using namespace std;,接下去的代码就可以不用写前缀直接写 vector 了。

下面介绍自定义的命名空间和使用自定义的命名空间
新建一个目录 02_namespace_example,然后在 02_namespace_example 里新建一个02_namespace_example.cpp 文件

然后输入下面这段代码

#include <iostream>
 using namespace std;

 namespace A
 {
 int x = 1;
 void fun() 
 {
 cout<<"A namespace"<<endl;
 }
 }
 using namespace A;
 int main()
 {
 fun();
 A::x = 3;
 cout<<A::x<<endl;
 A::fun();
 return 0;
 }

第 4 行,自定义了命名空间 A,里面定义了一个变量 x,并将 x 赋值为 1;定义了一个函数fun(),并在 fun()加了输出打印语句 cout<<“A namespace”<<endl;。
第 11 行,声明使用命名空间 A。
第 14 行,在第 11 行声明了命名空间 A 后,才能直接使用 fun();否则要写成A::fun();
第 15 行,将 A 命名空间下的 x 重新赋值为 3。
第 16 行,打印出 A 命名空间下的 x 的值。
第 17 行,调用 A 命名空间下的 fun()。

然后编译执行

可以看到fun()打印出字符
然后cout << A::xcout <<endl打印出3
然后调用A::fun()打印出字符