代码改变世界

visual C++ 2011-5-7

  Clingingboy  阅读(453)  评论(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

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2007-05-09 [转]强悍!情书居然能写得如此专业
2006-05-09 学习Professional ASP.NET 2.0(三)
点击右上角即可分享
微信分享提示