关于C++起步杂谈 0x00
C++ 是一种现代的、面向对象的编程语言,以其强大的功能和灵活性而闻名。它的语法相对复杂,学习曲线陡峭。应该如何深入浅出的入门C++呢?
我们先来一段最简单的C++程序,这是学习任何编程语言的传统第一步:
#include <iostream>
using namespace std;
int main(){
cout << "Hello, world!" << endl;
return 0;
}
//程序1在集成开发环境(IDE),中点击编译并运行,然后你的屏幕上应该会以某种形式出现一行
Hello, world!这就是我们程序的执行结果。那么,为什么呢?我们不妨逐行来理解。
第1行,是预处理指令,用于包含头文件iostream(input output stream,输入输出流)。直观上理解,它起到导入库的作用,告诉编译器在编译过程中包含标准输入输出流的实现,使得我们可以调用如 cout 和 endl 这样的功能。深入的理解,这行代码会在编译的预处理阶段,将iostream头文件里用到的代码进行展开,并加入到我们写的代码中。手动预处理指令为g++ -E xxx.cpp -o yyy.cpp。
第2行,是声明代码,直观上理解,它的作用是将标准命名空间(std)中的所有名称引入到当前作用域(此例中是全局作用域,也就是往下的所有代码),如此以来,就不需要在标准库的类、函数和对象前面加上 std:: 前缀了。深入的理解,命名空间的主要作用是防止命名冲突,尤其是在大型项目中,不同的库可能会定义相同名称的函数、类或变量。注意,在大型项目中,不建议过度用using namespace,可能会导致命名冲突,因此有些开发者和团队会避免在全局范围内使用它。
第3行到第5行,定义了一个特殊的函数——主函数。写在主函数里面的语句会最先被执行,是程序的入口。值得说明的是,第3行,也可以写作一下两种形式:
int main(int argc, char *argv[])
int main(int argc, char *argv[], char *envp[])和程序1中一样,这种写法都是标准签名,只不过后者可以接受命令行参数或环境变量,这在编写需要用户输入或配置的程序时非常有用。具体的用法和使用样例,超出了我们当前的讨论范围,感兴趣的读者可自行研究。
第4行,使用了cout来输出文本到控制台。cout 是 C++ 标准库中的一个ostream对象,用于输出数据。<< 是插入操作符,用于将数据发送到 cout。"Hello, world!" 是要输出的字符串。如果不太能理解 << ,可以这样理解:<<是一个操作符重载,它的行为类似于一个函数,接受cout和字符串(或其他支持的类型)作为参数,然后执行输出操作。endl 是一个操纵符,它的作用是在输出流中插入一个换行符,并刷新输出缓冲区,确保所有待输出的数据都被输出,值得一提的是,刷新缓冲区的操作比较费时,如果进行大量这样带有换行的输出,可能会影响性能。因此,我们可以选择用转义符号\n替代endl,例如:
cout << "Hello, world!\n";这样可以提高大量输出时的性能.
第5行,return 0; 是返回一个int类型的值0,在 main 函数中表明程序成功执行并退出。这个整数返回值是一个状态码,其中 0 通常表示成功,而非 0 值则表示出现了错误。这个惯例在很多操作系统中被用来让脚本或其他程序能够判断程序执行是否顺利。
第7行,是注释。注释是编写代码时添加的说明文本,它们不会被程序执行,但对阅读和理解代码的人来说非常重要。程序1中用的是单行注释,在 // 后面的行内文字全是注释。还有多行注释和文档注释,以多行注释为例:
/*这里也可以写注释。
这里写注释。
*/本文以简单的样例程序简单的介绍了C++,有些含义不需要都理解,了解即可。
下一篇文章,计划从数据类型开始,系统深入的介绍C++。