using namespace 你會發現有n多篇文章,但基本上就是那篇文章在不停的轉載,我覺得也沒覺得多清楚,就說的大家都懂得,防止命名沖突...
自定義命名空間和自定義命名空間的使用並沒有將,今天終於理解透了....在此分享給大家....
1、自定義命名空間定義:
第一種加入自定義類到自定義命名空間方式。
namespace potter{
//類可以添加到這裡,但是一般都不這樣添加
//第一種方式:這裡一般寫固定寫好了的類
//class string;
}
第二種加入自定義類到自定義命名空間方式。
using namespace potter;
class string{//string 自定義的string
}
2、自定義命名空間的使用:
上傳我測試的demo代碼,這樣大家更容易理解...
1》命名空間類頭文件:MyNameSpace.h(MyNameSpace.cpp什麼都沒做,不需理,創建這個MyNameSpace類,只做單純類創建命名空間用)
[cpp]
//類可以添加到這裡,但是一般都不這樣添加
//第一種方式:這裡一般寫固定寫好了的類
//class string;
}
class MyNameSpace//此下面代碼可以不管
{
public:
MyNameSpace(void);
~MyNameSpace(void);
};
2》自定義string.h
[cpp]
#pragma once
#include "MyNameSpace.h"
using namespace potter;//第二種加入自定義命名空間的自定義類
class string
{
public:
string(int);
~string(void);
int getId();
private:
int id;
};
3》自定義string.cpp
[cpp]
#include "StdAfx.h"
#include "string.h"
string::string(int id)
{
this->id=id;
}
int string::getId()
{
return id;
}
string::~string(void)
{
}
4》TestWin32.cpp(控制台應用程序的入口)
[cpp]
// TestWin32.cpp : 定義控制台應用程序的入口點。
//
#include "stdafx.h"
#include <string.h>//估計采用兩個string來產生沖突
#include "Student1.h"
#include "string.h"
#include <iostream>
using namespace potter;
void _tmain(int argc, _TCHAR* argv[])
{
string s(2);
std::cout<<s.getId()<<std::endl;
return;
};
5》運行結果:
2