c++中的枚舉、自定義變量以及命名空間
枚舉
格式:
enum class 名稱 : 基本類型
{
變量1,
變量2,
…
}
例如:
enum class COLOR : short //枚舉顏色
{
RED, //默認爲0
BLUE,
GREEN
};
int main()
{
COLOR red = COLOR::RED;
COLOR blue = COLOR::BLUE;
COLOR green = COLOR::GREEN;
//std::cout << "red = " << red << std::endl; //編譯過不去,類型比較嚴格
std::cout << "red = " << (short)red << std::endl; //強轉才能打印出來
std::cout << "blue = " << (short)blue << std::endl;
std::cout << "green = " << (short)green << std::endl;
}
結果:
結論:
1、enum型內部變量,若自然順序,依次增1
2、若要打印顯示對應數值必須顯式轉換
重要事項:
1、內部變量默認類型int
2、成員只能是整數,浮點數不可以
自定義變量
大體上有以下三種方式:
1、#define Des_TypeName TypeName
2、typedef TypeName Des_TypeName;
3、using Des_TypeName=TypeName; //c++11以上可用包含11
注意: 第一種純屬是字符的替換,後兩種不是
例子:
#define MyInt int //第一種
typedef int myint; //第二種
int main()
{
using mint = int;//第三種
MyInt AGE{ 10 };
myint myint{ 20 };
mint Age{ 30 };
std::cout << "define value=" << AGE << typeid(AGE).name() << std::endl;
std::cout << "typedef value=" << myint << typeid(myint).name() << std::endl;
std::cout << "using value=" << Age << typeid(Age).name() << std::endl;
}
結果:
命名空間使用
1、單項使用
using std::cout; //使用這個,就using這個
using std::cin;
int pig{ 0 };
cout << "我是豬!" << (char)10;
cin >> pig;
說明: 用哪個就using哪個
2、完整包含
using namespace std; //直接完整全部用了
int pig{ 0 };
cout << "我是豬!" << (char)10;
cin >> pig;
說明: 用哪個空間裏的,直接using namespace 整個空間
3、嵌套使用
namespace zhansan //張三的命名空間
{
unsigned int age = 30;
char sex = 1;
namespace dog //狗的命名空間,嵌套
{
unsigned int age=5;
char sex = 0;
}
}
int main()
{
using namespace std;
using namespace zhansan;
cout << dog::age << endl; //可訪問
dog::age = 10; //可修改
cout << dog::age << endl; //可打印
}
4、自定義命名空間
代碼:
namespace zhansan
{
unsigned int age = 30;
char sex = 1;
}
int main()
{
using namespace std;
//1、完整包含
using namespace zhansan;
cout <<"zhansan的年齡=" << age << endl;
//2、僅包含需要的變量
using zhansan::age;
cout << "zhansan的年齡=" << age << endl;
}
使用注意事項:
1、不能放函數體內
2、可嵌套
3、子級空間調用上級空間需要加命名空間限定符