文章目录
第一个C++程序
还是熟悉的hello world 只不过相比于C语言的写法还是有些许不同之处的,下面我会慢慢的进行介绍
#include<iostream> //类似于C语言的#include<stdio.h>
using namespace std; //这句话的意思就是,把 C++标准库的东西全部展开
int main()
{
cout << "hello world" << endl; //endl相当于C里面的"\n"换行
}
命名空间
相信我们写C代码的途中,都会多多少少遇见过,定义的变量名相同,函数名相同,那是因为创建的相同名称的变量在同一个作用域内,从而导致编译出错无法运行的时候,因为C语言不支持命名空间,而C++定义了命名空间,就很好的解决了这个问题,命名空间需要使用namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员,命名空间的作用就是防止变量、函数、类、结构体等等发生命名冲突,而命名空间就很好的可以防止重命名了。
如果下面的代码如果我们加了 iostream 的头文件,那么就会和标准库里面的rand函数冲突
那在C++中如何使用命名空间来避免重命名呢?
注意:一块命名空间内不仅可以创建变量,还可以创建函数、结构体,另外命名空间还可以嵌套使用。
namespace Ywy_L
{
//变量
int rand = 20;
//函数
int Add(int x, int y)
{
return x + y;
}
//结构体
typedef struct BinaryTreeNode
{
int val;
struct BinaryTreeNode* left;
struct BinaryTreeNode* right;
}BTNode;
namespace L
{
int val = 0;
}
}
当我们解决了重命名的问题,那么我们该如何访问到命名空间内的成员呢?
关于命名空间如何访问,C++提供了以下三种方式供我们使用。
1.使用命名空间名称加域作用限定符,就是告诉编译器去这块命名空间内去找rand
int main()
{
cout << "rand=" << Ywy_L::rand << endl; //1
return 0;
}
2.使用using将命名空间中某个成员引入,只展示部分成员,编译器编译时即可找到它
using Ywy_L::rand;
int main()
{
cout << "rand=" << Ywy_L::rand << endl; //1
cout << "rand=" << rand << endl; //2
return 0;
}
3.使用using namespace +命名空间名称 引入,这样编译器会把命名空间全部展开,编译时就可以找到
using namespace Ywy_L;
int main()
{
cout << "rand=" << Ywy_L::rand << endl; //1
cout << "r