c++兼容C语言,C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。
因此你可以理解为c++是在c语言的基础上进行扩展的升级版.
它补充了C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的.
所以入门篇讲解的就是c++在c基础上优化后的一些地方,对c++的语法进行熟悉.
C++总计63个关键字,C语言32个关键字
asm | do | if | return | try | continue |
auto | double | inline | short | typedef | for |
bool | dynamic_cast | int | signed | typeid | public |
break | else | long | sizeof | typename | throw |
case | enum | mutable | static | union | wchar_t |
catch | explicit | namespace | static_cast | unsigned | default |
char | export | new | struct | using | friend |
class | extern | operator | switch | virtual | register |
const | false | private | template | void | true |
const_cast | float | protected | this | volatile | while |
delete | goto | reinterpret_cast |
在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染.
例如:
我定义了一个全局变量,对这个变量进行输出,编译器会报错,这是因为名为:rand在头文件中也存在,这就造成了一个问题,命名冲突,但是在未来写项目写代码,命名是必不可少的,因此,c++引入了命名空间,有效的解决这个问题.
接下来我们对上面这段代码进行解读.
补充:调用变量名的时候,全局变量找不到的时候,是不会去命名空间里面找的,因此命名空间就像给里面的变量围了一堵墙,空间名+::变量名,好比就是钥匙.
命名空间内部不止可以存放变量,还可以存放类型,函数,甚至可以进行命名空间的嵌套.
一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中!
这里可能还会涉及多个重名的命名空间,c++的处理是这样的:同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中.
下面是对上例的补充:
可以单独对某个空间的成员进行展开,更加灵活.
输入输出(上面谈及过一些):
说明:
std命名空间的使用惯例: std是C++标准库的命名空间,如何展开std使用更合理呢? |
如上代码所示,cin是流提取,从键盘上获取的数据,存放到两个变量中,然后再将新的变量值输出.
概念:
声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。
void Func(int a = 0)
{
cout<
分类:
void Func(int a = 10, int b = 20, int c = 30)
{
cout<<"a = "<
void Func(int a, int b = 10, int c = 20)
{
cout<<"a = "<
注意:
1. 半缺省参数必须从右往左依次来给出,不能间隔着给
2. 缺省参数不能在函数声明和定义中同时出现
//a.h
void Func(int a = 10);
// a.cpp
void Func(int a = 20)
{}
// 如果声明与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该
用那个缺省值。
3. 缺省值必须是常量或者全局变量
4. C语言不支持(编译器不支持)
以上就是本章的所有的内容啦,又开了个新的篇章,在以后的时间里我也会积极的分享更好的博客给大家,把学习到的内容都写出来,感谢观看!