第一次写博客,具体怎么操作还不太清楚。本着知识输出的精神,硬着头皮来啦!
由于在学习C++,所以主要更新C++在书本中或者实践中的心得。参考书是《C++ prime plus》——一本比较基础的入门书籍。
## C++的头文件
一直很奇怪为什么C或者C++程序中总要有一个奇怪的:
#include<>
开头的格式,而且里面有时候有.h,有时候没有。看了这本书终于看懂了(之前果然是因为自己没有深刻的求知精神啊)。
扯远了,比如,#include的意思是将iosteam.h文件添加到程序中。比如对于一个程序,新建出来是刷白刷白的,什么能调用的功能都没有,连输入cin输出cout都没有,这个时候如果你包含了iostream.h文件,那么你就能在主程序中使用cin和cout了(当然光有这个还要有命名空间才行,但是差不多是这个意思)。
头文件很重要,他包含了几种形式:
|C++旧式|以.h结尾i |C++可以使用
|C旧式|以.h结尾|C++可以使用
|C++新式|没有扩展名|C++可使用,但是要namespace std
本着实践出真知的精神,我尝试了第一种方式:
#include<iostream.h>
然而并不能成功运行,还有另外一种方式:
#include"iostream.h"
同样不行,所以就规规矩矩写成:
#include<iostream>
对于命名空间,由于之前直接接触了一下Linux下的QT界面编辑,所以一直不懂这个命名空间是干嘛的。现在好像明白了。
对于一个稍微复杂的程序,可能有两个同名的函数,这样可能导致编译出错。那么如何解决这个问题呢?程序员让封装好的函数放在一个命名空间下,虽然你两个函数名字一样,但是命名空间不一样,这样编译器就不出错了吧?机制的很。
比如:
Microflop::wanda(“go dancing?”);
Piscine::wanda(“a fish named Destiny”);
同一个函数wanda(),被分别封装在Microflop和Piscine两个不同的命名空间中,但是可以在一个函数中使用。
同时对于namespace,有两种不同的用法:
第一种比较偷懒:
using namespace std;
这样std的所有名称都可以直接用了,但是如果遇到同名的文件就是出事了;
第二种方法比较好:
using std::cout;
using std::endl;
using std::cin;
这种方法在后面的程序中可以直接使用这三个功能函数。但是要再使用其他的函数也要在此声明。怪不得在QT编程的时候有很多的“命名空间::”。
不过对于C++的入门来说,不会有太多的复杂程序和同名函数,所以后面暂时都用第一种偷懒的方式。
分割线
关于命名空间有几种方式:
第一种就是直接在头文件的地方:
#include<iostream>
using namespace std;
这种命名方式最懒也最容易出问题,但是对于初学者应该没什么影响!
第二种方式是写在主函数里面
int main()
{
using namespace std;
}
这种方式只允许在主函数里面使用std包含的对象(比如cout、cin)。
第三种方式:
std::cout<<"I like C++“;
std::cin>>like;
这种方式经常出现在QT界面编程里面,是一种比较麻烦但是也比较保险的方法!
第四种方式:
#include<iostream>
using std::cout;
using std::cin;
这种方式在头文件下面声明以后,就可以在其他函数位置使用这两个对象。
分割线
写在最后:第一次写博客,不管是在文章排版上和C++知识上都有很多不足,希望各位看官批评指正!