IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++入门知识 -> 正文阅读

[C++知识库]C++入门知识

一、命名空间

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

1. 命名空间的定义

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

以下为基础的命名空间定义

namespace N1
{
    int a = 1;                      //定义变量

    struct S                        
	{
		int* arr;
		int n ;
	}s;                             //定义结构体


    int Add(int left, int right)    //定义函数
    {
        return left + right;
    }

}

命名空间还可以嵌套,示例如下

namespace N2
{
	int a;
	namespace N3
	{
		int b;
	}
}

在同一工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

2. 命名空间的使用

2.1 命名空间名称及作用域限定符

通过域作用限定符——::来使用命名空间中定义的变量或函数,其格式为命名空间名称::变量

如下所示,程序分别输出1,2,3

namespace N1
{
	int a = 1;

	struct S
	{
		int b;
		int c;
	}s;

	int Add(int left, int right)    
	{
		return left + right;
	}
}
int main()
{
	N1::s.b = 2;
	int ret = N1::Add(1, 2);
	printf("%d\n", N1::a);
	printf("%d\n", N1::s.b);
	printf("%d\n", ret);
	return 0;
}

在命名空间中也可以只对结构体或者函数进行声明,但在外部创建结构体变量时,其格式需要注意

namespace N2
{
	struct S
	{
		int c;
		int d;
	};

	int ADD(int left, int right);
}

int N2::ADD(int left, int right)
{
	return left + right;
}

int main()
{
	struct N2::S s = { 2 ,1 };
	int ret = N2::ADD(1, 4);
	printf("%d\n", s.c);
	printf("%d\n", ret);
	return 0;
}

命名空间中的变量仍然是全局变量,命名空间不会影响变量的属性,只影响编译器查找变量的规则:

  • 如果变量前面有域作用限定符修饰( :: ),则只会从命名空间中查找变量,没找到则报错
  • 如果无域作用限定符,则先从main函数中查找变量,没找到再去全局变量中找,如果都没有则报错

2.2?使用using将命名空间中成员引入?????

使用 using N3::b?会将命名空间中的成员b解除限制,若定义了其他全局变量b,则会产生命名冲突

namespace N3
{
	int a = 10;
	int b = 20;
}

using N3::b;
int main()
{
	printf("%d\n", N3::a);
	printf("%d\n", b);
	return 0;
}

2.2?使用using namespace 命名空间名称引入?

使用?using namespace N2;?会将命名空间中的所有成员解除限制,若有其他全局变量与命名空间N2中的变量名相同,则会产生命名冲突,慎用!!!

namespace N2
{
	int a = 10;
	int b = 20;
}

using namespace N2;
int main()
{
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

二、C++输入&输出

首先我们认识C++的第一个程序,该程序的运行结果为输出 "Hello world"

#include <iostream>
using namespace std;
int main()
{
	cout << "Hello world" << endl;
	return 0;
}

1. 看完上一章一定对?using namespace std; 比较熟悉了,C++库的实现定义在一个叫std的命名空间中,但其实这种写法并不好,容易产生命名冲突,可以用以下方式改进:

#include<iostream>
int main()
{
	std::cout << "Hello world!!!" << std::endl;
	return 0;
}

2. 不同于C语言中的printf打印输出 和 scanf输入,在C++中可以使用cout标准输出(控制台)和cin标准输入(键盘),"cout << "?表示将"<<"后的字符输出,同理,"cin >>" 表示输入至变量中,?endl表示换行。

使用C++输入输出更方便,不需增加数据格式控制,比如:整形--%d,字符--%c

#include<iostream>
using namespace std;	
int main()
{
	cout << "Hello world!!!" << endl;
	cout << "Hello world!!!" << '\n';
	cout << "Hello world!!!\n";

	//自动识别类型
	int i = 10;
	double d = 1.11;
	cout << i << " " << d << endl;
	
	cin >> i >> d;
	cout << i << " " << d << endl;

	return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:04:14  更:2021-12-06 15:06:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:46:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码