C++:命名空间

news/2024/12/22 22:25:31/

1,命名空间简介
命名空间随标准C++而引入,相当于一个灵活的文件域(全局域),以关键字namespace开头给其起个名字,并用大括号把定义区域括起来(声明块)。

在域外使用域内成员时,需要加上命名空间名作为前缀,再加上域操作符“::”,可以使用嵌套定义。

如果在关键字namespace之前使用using,就不必使用限定修饰名,即可以一次性使命名空间中所有成员都可以直接被使用。

标准C++库中所有组件都在std的命名空间中声明和定义的,在标准C++平台调用如下语句:

using namespace std;

便可直接使用标准C++库中所有成员,注意:如果使用命名空间std,则#include编译预处理命令包含头文件时,必须去掉扩展名(.h)。
2,常见问题分析
2.1 使用标准C++命名空间std时,加载头文件:

错误代码:

#include<iostream.h>
using namespace std;
void main()
{cout<<"Hello,world!"<<endl;getchar();
}

错误 1 error C1083: 无法打开包括文件:“iostream.h”: No such file or directory c:\users\dell\documents\visual studio 2012\projects\project\project\code1.cpp 1 1 Project

分析:
在标准C++命名空间std,<iostream.h>和不同,C++标准明确提出不支持后缀为(.h)的头文件(为了与C区别和正确使用命名空间)。

正确代码:

#include<iostream.h>
using namespace std;
void main()
{cout<<"Hello,world!"<<endl;getchar();
}

2.2 命名冲突:

错误代码:

#include"class1.h"
#include"class2.h"
#include<iostream>
using namespace std;
void main()
{MyClass x;MyClass y;x.Info();y.Info();getchar();
}//class1.h
#include<iostream>
using namespace std;
class MyClass
{
public:void Info(){cout<<"头文件class1.h"<<endl;}
};//class2.h
#include<iostream>
using namespace std;
class MyClass
{
public:void Info(){cout<<"头文件class2.h"<<endl;}
};

错误 1 error C2011: “MyClass”:“class”类型重定义 c:\users\dell\documents\visual studio 2012\projects\project\project\class2.h 4 1 Project

分析:
class1.h和class2.h头文件都定义了类MyClass,导致名字冲突,编译器认为MyClass被重复定义。解决办法之一改动其中一个类名,之二在class1.h和class2.h头文件中都引入namespace。

正确代码:

#include"class1.h"
#include"class2.h"
#include<iostream>
using namespace std;
void main()
{MyNamespace1::MyClass x;MyNamespace2::MyClass y;x.Info();y.Info();getchar();
}//class1.h
#include<iostream>
using namespace std;
namespace MyNamespace1
{
class MyClass
{
public:void Info(){cout<<"头文件class1.h"<<endl;}
};
};//class2.h
#include<iostream>
using namespace std;
namespace MyNamespace2
{
class MyClass
{
public:void Info(){cout<<"头文件class2.h"<<endl;}
};
};

http://www.ppmy.cn/news/611856.html

相关文章

一个整型数组里除了两个数字之外,其他的数字都出现了两次

题目&#xff1a; 一个整型数组里除了两个数字之外&#xff0c;其他的数字都出现了两次 解答&#xff1a; 我们从头到尾异或数组中的每个数字&#xff0c;那么最终的结果是两个只出现一次数字的异或的结果&#xff0c;由于两个数字不一样&#xff0c;那么异或的结果肯定不为0&a…

资源调度框架 YARN

3.1.1 什么是YARN Yet Another Resource Negotiator, 另一种资源协调者通用资源管理系统为上层应用提供统一的资源管理和调度&#xff0c;为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处 3.1.2 YARN产生背景 通用资源管理系统 Hadoop数据分布式存储&#xff08…

微信小程序import和include

import 和include 是微信小程序提供的2中引用方式 import 一般结合模板template使用 import import可以在该文件中使用目标文件定义的template&#xff0c;如&#xff1a; 在 item.wxml 中定义了一个叫item的template&#xff1a; <!-- item.wxml --> <template …

基于至强® 平台的内存数据库解决方案

基于至强 平台的内存数据库解决方案 英特尔与 SAP 之间的协作和联合开发已持续六年。 SAP HANA 平台的创新内存架构契合持久内存&#xff0c;仅需少量变更。 SAP HANA 平台是第一个支持英特尔傲腾™ 数据中心级持久内存的重要数据库平台。 SAP HANA 2.0 SPS 03 包含众多…

线性回归算法原理简介

1&#xff0c;线性回归概念 回归和分类的区别&#xff1a;简单地说&#xff0c;回归就是通过数据预测出一个目标值&#xff08;实际值&#xff09;&#xff0c;分类就是通过数据预测出一个类别&#xff08;二分类&#xff0c;多分类&#xff09;。 比如&#xff1a;银行贷款实例…

python格式化

%s 字符串 %d 有符号整数(十进制) %f 浮点数字(用小数点符号) fomat转载于:https://www.cnblogs.com/jiaoxiaohui/p/10384467.html

微信小程序模板template

上面是官方的讲解, 主要是方便在不同的地方调用. 下面自己说下使用, 先创建一个模板名字是自己随便取的, 在template.wxml中填写模板 最外层用template标签 设置一个name属性 <template name"msgItem"> <view> <text bindtapclick1>学习总结中…

ODrive三环控制

目录 1. 位置控制环 2.速度控制环 3. 电流控制环路 4. 控制器详情 5. 调PID