C++学习之路——Chapter 2:开始学习C++

第二章 开始学习C++

这章比较基础,没有太多没学过的,我把书上的内容一页页过了一遍,将有些小细节记录下来。
1.main函数会被启动代码调用,启动代码是程序和操作系统之间的桥梁。

2.int main()才是C++标准格式,尽管void main()也可以被使用,但是它并不适用于所有系统。

3.#include<……>是预处理器操作,在编译开始前会用头文件的内容替换掉#include<……>。
所有的预处理命令都以#开头,预处理命令主要包括宏定义、文件包含、条件编译。include属于文件包含。

4.关于新旧风格的头文件
头文件C++旧式风格(如iostream.h)与新式风格(如iostream)的区别在于前者调用库函数,使用的是全局命名空间;后者未定义全局命名空间,需要使用namespace std。

4.关于using namespace std。
using 是一个编译指令,在此条语句中,using 使得名称空间std中的所有名称都可以用。

名称空间的详细解读可以看这个博客:命名空间(namespace)详解
如果不使用using指令(仅以std为例),也可以直接在cout或者cin前面加上std::,如std::cout。(这里要注意名称空间中可以包含对象、函数、变量等等等等,cin/cout是i/ostream类的对象,而不是函数,不是函数,不是函数!这是大多数人学习可能会进入的误区)
e.g.

#include <iostream>       
int main()
{
	std::cout << "Hello world!\n";
	return 0;
}

或者更好的办法是只声明想要使用的变量(不过应该也没人会创个变量叫cout什么的吧?!):

#include <iostream>    
using std::cout;
int main()
{
	std::cout << "Hello world!\n";//如果在这个程序中使用cin就会出错
	return 0;
}

自己码的关于名称空间的小练习:

#include <iostream>    
using namespace std;
namespace EXAMPLE_1 
{
	int k = 1;
}
namespace EXAMPLE_2
{
	namespace EXAMPLE_3//名称空间可以嵌套
	{
		int func(int x, int y) 
		{
			return x + y;
		}
	}
}
int main()
{
	using namespace EXAMPLE_1;
	using EXAMPLE_2::EXAMPLE_3::func;//这样声明的时候要注意不能以名称空间名结尾
	cout << "EXAMPLE_1::k="<<k<<endl;
	cout << "EXAMPLE_2::EXAMPLE_3::func=1+1=" << func(1,1)<< endl;//函数、类、结构体等等同理
	return 0;
}

5.函数似乎没有啥好讲的,除了形参与实参值以及返回值值得注意一下。
这里说两点,一是在设计函数时,个人感觉最好在最前面声明函数原型,尽管不是必要的,但是可以避免不必要的错误,以及使程序的框架更加清楚;二是main函数中结尾的return 0,这个0值是返回给操作系统的,通常返回值为0意味着程序运行成功。

第二章的复习题和练习都比较简单,跳过。

上一篇:【计网】—— chapter 01 概述


下一篇:从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)