导读:
c++在c的基础上,容纳进去了面对对象编程的思想,并增加了许多有用的库,以及编程范式等。c语言是面向过程的编程语言,而c++由于其兼容c,其为既面向对象,又面向过程的语言。然而,Java为真正只是面向对象的语言。
面向过程:
把一件事分为几步,面向过程编程就是第一步做什么,然后接着做什么的过程的实现。
面向对象:
一件事里涉及到了几个对象
1.c++关键字
c++共63个关键字,而c语言共有32个关键字。这里不进行细讲。
注意:
取变量的名称是不能和关键字一样的,关键字通常用来引导一些关键语法。
2.命名空间
定义方法:
定义命名空间需要使用关键字:namespace,后面跟命名空间的名字,具体内容包含在跟在命名空间名字后面的花括号里(即为命名空间的成员)。
注:命名空间里什么都能定义。
namespace dddle
{
int rand=10;
int Add(int x,int y)
{
return x+y;
}
struct Node
{
struct Node* next;
int val;
};
}
命名空间的目标作用:
为了弥补c语言的坑:
我们知道,c语言中自己有一个rand函数,如果我们忘记这个名字已经被定义过然后再次定义,那么系统就会报重定义的错误,所以,为了防止出现这种命名冲突,我们有两种解决方法:一种是尽量不要重名,另一种是不要出现在同一域中,而命名空间就是第二种解决方法。
使用方法:
单独制定,'::':域作用限定符
我们可以用'::'域作用限定符获得部分命名空间成员的使用权限。不过仅展开了使用的那一次。
即:命名空间的名字+::+成员
dddle::rand=1;//在具体使用时展开。
部分展开,'::':域作用限定符
直接在展开的那个文件里可以一直有权限,不过,权限展开后如果仍出现冲突那么就不应该展开。所以单独展开比较安全。
using dddle::rand;
全部展开:
using namespace dddle;
命名空间的套娃:
namespace dddle
{
namespace c
{
int n;
}
}
命名空间还可以套娃的,即一个命名空间里定义另一个命名空间。而取得权限时,需要连用域作用限定符。
dddle::c::n=1;
注意,同名命名空间会合并。
3.c++输入和输出(目前只是简单了解一下)
头文件:
iostream
早期的标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需要包含对应的头文件,后来将其实现在std命名空间内,为了和c的头文件区别,也为了正确的使用命名空间,规定c++头文件不带.h旧编译器(vc6.0)中还支持<ios