日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C++:命名空间

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++:命名空间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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;}
};
};

總結

以上是生活随笔為你收集整理的C++:命名空间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。