第一章 C++入门
C++简介
什么是C++
C语言是面向过程式的语言,在处理小规模的问题时则能体现出其简单易上手的的优势,但是在面对大型程序或需要高度抽象化的程序时,C语言就显得略有鸡肋。在20实际80年代,计算机界为了解决软件危机提出了面向对象(OOP)思想的变成模式,于是支持OOP的编程语言也应运而生。
1982年Bjarne Stroustrup博士在C语言的基础上引入并且扩充了面向对象的概念,并且命名为C++,因此C++ 是在C语言基础上诞生的,它既可以支持面向过程编程也可以支持面向化程序设计。
C++ 发展至今和C语言一样已经拥有很多各版本,并在不停的升级中,目前最为常用时C++ 98(引入STL,以模板方式重新编写标准库)和C++ 11(增加了很多特性,例如范围for,auto关键字),目前C++已经应用于互联网各个方向,例如大型系统开发,游戏开发,网络工具,嵌入式,数字图像处理……
如何学习
多看书,目前市面上有很多C++ 优秀书籍,有些甚至成为了C++ 工程师心中的标杆(《Effective C++》)。
多记录,每天的学习笔记,每周的学习总结,遇到的问题,这些都要多多记录,方便之后再次遇到相同的问题可以直接拿出来复习。
思维导图,思维导图是学习中必不可少的,可以帮我们理清学习路线,学习思路,方便复习。
多敲代码,语言都是如此多用才是巩固的基础,夺取在线OJ网上练习,或者自己敲几个小项目练练手都是练习的好思路。
命名空间
在一门高级语言中,变量是大量存在的,那么难免在定义变量的时候就会重名,尤其在一个项目或工程中有多个工程师的时候就跟容易与他人定义相同变量名的变量,重名问题就会更加明显,在C语言中我们没有一个有效的办法来解决这个问题,因此C语言在大型项目方面会很吃力,因此在C++中加入了命名空间的语法,不同的程序员之间使用不同的命名空间,在不同的命名空间中允许变量重名,由此在项目合作中十分有用。
命名空间的定义
#include <iostream>
//命名空间的定义
namespace N1
{
//在命名空间中可以定义函数、变量
int a = 1;
int b = 1;
int Add(int a, int b)
{
return a + b;
}
}
//命名空间的嵌套
namespace N2
{
int a = 2;
int b = 2;
int Add(int a, int b)
{
return a + b;
}
namespace N3
{
int a = 3;
int b = 3;
int Add(int a, int b)
{
return a + b;
}
}
}
//命名相同的命名空间
namespace N1
{
int c = 1;
}
每一个命名空间都是一个作用域,空间中的内容都局限于该空间中,而我们要使用某空间中的某一变量或函数时指定命名空间即可找到指定的内容。
命名空间支持嵌套,如果一个工程中同时存在多个相同名称的命名空间,则最后会合成到一个命名空间中。
命名空间的使用
在使用命名空间时要加上作用域限定符::
进行作用域的限定。我们右三种使用命名空间的方法。
加命名空间加作用域限定符<