C++ 入门
我根据所学,将入门分为十个小部分。如果有秃道同袍发现不对之处,还望多多指正,感激不尽。
1.关键字:对于关键字的学习,是学习编程语言的基础,这些关键字的含义和使用方式组成了基础的语法部分,此处不列举关键字,关键字的学习是贯穿整个语法部分的学习过程的。C++98里是63个关键字,C++11中73个。(C语言中32个关键字)。
2.命名空间:命名空间的引入是为了解决命名冲突。如果把所有变量、函数、类,名字都放在同一作用域,很容易出现傻傻分不清的情况,如果将它们放在不同的作用域,就能避免冲突。比如一个家庭里,兄弟两个的名字是一样的,会出现不知道叫的是谁这样的问题,如果同名的人在不同的地方,就很容易区分了,如西安小C,南京小C,虽然都叫小C,但是能区分叫的是谁。命名空间内的内容都局限于该命名空间。
使用关键字namespace定义命名空间。
namespace N1 //N1是命名空间的名字 { //在括号内定义的变量、函数、类就是该命名空间的成员 int a = 10; int Add(int left, int right) { return left + right; } } //不加;号
命名空间可以嵌套定义
namespace N2 { int a = 5; int* a = &a; namespace N3 //嵌套的命名空间,命名空间N2内的命名空间N3 { int a = 10; int *a = &a; } }
同一作用域下的同名命名空间会合并成为一个命名空间,若它们内部存在同名成员则会出现错误。不在同一作用域下的同名命名空间不会合并为一个。
对于命名空间内的成员的使用, 第一种方式:命名空间的名字+作用域限定符
namespace N1 { int a = 10; int Add(int left, int right) { return left + right; } } int main() { int x = 11, y = 15; int sum; sum = N1::Add(x, y);
cout << N1::a << endl; return 0; }
第二种方式:使用 using将命名空间内的成员引入
using N1::a; int main() { cout << a << endl; //输出a return 0; }
第三种方式:using namespace N1;
using namespace N1; // int a //错误,此时N1的内容相当于全局变量,不可在同一作用域再有同名成员 int main() { //int a = 5; //和N1中的a不是同一作用域,可以使用,且优先使用该局部变量 cout << a << endl; //输出a cout << N1::a << endl; //有同名局部变量时,用命名空间+作用域限定符来说明使用的是哪个变量 return 0; }
3.输入与输出:cout<<标准输出(控制台),cin>>标准输入(键盘),使用时要包含头文件<iostream>,以及标准命名空间 std。某些旧版本编译器支持使用<iostream.h>头文件。
#include<iostream> using namespace std; int main() { cout << "hello world" << endl; //endl为换行 return 0; }
int main() { int a; cin >> a; //单个输入a int b; char c; cin >> b >> c; //连续输入b 和 c cout << a << endl;//单个输出a ,endl为换行 cout << a << " " << b << " " << c << endl; //连续输出a 空格 b 空格 c return 0; }
有关于输入输出的缓冲区问题此处暂时不讨论。
4.缺省参数:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该 默认值,否则使用指定的实参。(备胎,车上放一个备用轮胎……)