visual C++ 2011-5-7
2011-05-09 22:18 Clingingboy 阅读(452) 评论(0) 编辑 收藏 举报
看深入浅出MFC看到的一些细节问题…技术无法跨越,慢慢跟进
一.创建结构体数组
struct tagDemo{
int a;
char b;
};
int main()
{
struct tagDemo a[]={1,'a',3,'b'};
return 0;
}
二.#deinfe中的#、## 和 #@
http://www.cnblogs.com/dust/archive/2008/04/24/1169498.html
#define ConCat(x, y) x ## y;
int main()
{
char str[]= ConCat("aa","bb");//aabb
return 0;
}
三.struct中的static变量
http://blog.csdn.net/LuckyDan61/archive/2010/05/10/5576367.aspx
typedef struct with_static
{
int a;
static const int b = 1;
}with_static;
c++可以,c不可以
四.#define取指针
#define RUNTIME_CLASS(class_name) (&class_name)
int main()
{
Demo a;
Demo *b=RUNTIME_CLASS(a);
Demo *c=&a;
return 0;
}
五.用宏定义类成员
很动态...之前很难理解为什么宏里面还会有一个public…
#define DECLARE_DYNAMIC() \
public: \
int add(int a,int b){ return a+b; };\
class Demo
{
DECLARE_DYNAMIC();
};
int main()
{
Demo demo;
int num=demo.add(1,2);
return 0;
}
六.在结构体中定义函数
应该也c++可以,c不可以
int tagDemo::foo(int a)
{
return a+2;
}
int main()
{
struct tagDemo tag;
int num=tag.foo(1);
return 0;
}
七.结构体中的构造函数
c++中的struct已然变成了类了.
struct tagDemo{
tagDemo();
int a;
char b;
int foo(int a);
};
tagDemo::tagDemo()
{
a=1;
b='b';
}
八.类的静态数据成员初始化
需要在类外部初始化(且只能初始化一次),只有初始化后才可以修改数据成员…这个规矩比较烦
class Demo
{
public:
static int num;
};
int Demo::num=0;
int main()
{
Demo::num=2;
return 0;
}
九.静态数据成员指针
注意不要被::迷惑,解析从右边开始
Demo::num=2;
int *num=&Demo::num;
参考:http://blog.csdn.net/celeil/archive/2008/04/24/2325239.aspx