初识C++:开启C++之旅

目录

1.C++的第一个程序

2.namesapce命名空间域

2.1namespace的意义

2.2.2namespace的定义

2.3命名空间的使用

3.C++输入/输出 

4.缺省参数

5.函数重载

6.引用

 

6.1引用的特性

6.2引用的使用

 


1.C++的第一个程序

c++版本:

#include

using std::cout;
using std::endl;

int main()
{

	cout << "Hello Word!" << endl;
	

	return 0;
}

此外,由于C++是兼容绝大多数c语言的语法的我们还可以用c语言的方式实现。

#include

using std::cout;
using std::endl;

int main()
{

	//cout << "Hello Word!" << endl;

	printf("Hello Word!");
	

	return 0;
}

2.namesapce命名空间域

2.1namespace的意义

在c\c++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的就是对标识符的名称进行本地化,以免命名冲突或名字污染,namespace关键字的出现就是针对这种问题。

举个例子:c语言项目类似下面程序这样的命名冲突是普遍存在的问题,c++引入namespace就是为了更好的解决这样的问题。

初识C++:开启C++之旅_第1张图片 此时我们在c++当中引用namespace就不会有这种问题:

#include
#include
//命名域将rand和函数rand隔开
namespace lcl
{
	int rand = 10;
}

using namespace::std;

int main()
{
	cout << lcl::rand << endl;

	return 10;
}

2.2.2namespace的定义

1.定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量、函数、类型等 。

2.namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand就不在冲突了。

//命名域将rand和函数rand隔开
namespace lcl
{
	int rand = 10;

	int Add(int x, int y)
	{
		return x + y;
	}

	struct Node
	{
		struct Node* next;
		int data;
	};
}

using namespace::std;

int main()
{

	//这里访问的是rand函数指针
	printf("%p\n", rand);

	//这里访问的时lcl命名空间中的rand
	printf("%d\n", lcl::rand);



	//cout << lcl::rand << endl;

	return 10;
}

3.C++中域有函数局部域、全局域、命名空间域,类域;域影响的是编译时语法查找一个变量、函数、类型出处的逻辑,所以有了域隔离,名字冲突就解决了。局部域和全局域除了会影响编译查找逻辑,还会影响变量的生命周期,命名空间域和类域都不影响变量的生命周期。

4.namespace只能定义在全局,当然它还可以嵌套定义。

#include

namespace A
{
	namespace lcl
	{
		int rand = 10;

		int Add(int x, int y)
		{
			return x + y;
		}

		struct Node
		{
			struct Node* next;
			int data;
		};
	}

	namespace xyy
	{
		int rand = 2;

		int Add(int x, int y)
		{
			return x + y;
		}

	}

}

using namespace std;

int main()
{
	//使用lcl的命名空间
	printf("%d\n", A::lcl::rand);

	//使用xyy的命名空间
	printf("%d\n", A::xyy::rand);



	return 0;
}

5.项目工程中多文件定义的同名namespace会认为时一个namespace,不会冲突。

C

你可能感兴趣的:(c++,开发语言)