#include <iostream>
using namespace std;
class A
{
#define MAX 5 // 宏定义是全局的,因为在预编译时就替换掉了
public:
typedef unsigned long ULONG; // 作用域局限在这个类中, 且有修饰符
private:
int _n;
ULONG _age;
public:
A(int n, ULONG age);
void display();
};
A::A(int n, ULONG age)
{
_n = n;
_age = age;
}
void A::display()
{
cout << _n << endl;
cout << _age << endl;
cout << MAX << endl;
}
int main()
{
// typedef unsigned long ULONG; // 作用域在main()中
A::ULONG na; // na的类型是A::ULONG, 并非ULONG
A a(3, 20);
a.display();
cout << MAX << endl;
na = 25;
cout << na << endl;
return 0;
}
/*
运行情况:
D:\Desktop\test>make
g++ -o a.exe a2.cpp
D:\Desktop\test>a
3
20
5
5
25
*/
typedef和#define的作用域问题
最新推荐文章于 2023-11-17 20:28:33 发布