下载此文档

C++builder编程总结.doc


文档分类:IT计算机 | 页数:约51页 举报非法文档有奖
1/51
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/51 下载此文档
文档列表 文档介绍
一、typedef 定义函数指针类型及用法
typedef可以用于定义函数指针类型:
【语法】
typedef <返回类型> (*<函数类型名>)(参数表)
typedef <返回类型> (<类名>::*<函数类型名>)(参数表)
【用途】
1、可以用来定义该函数类型的函数指针,就不用每次使用函数指针都要写一次函数原型了;
2、有了类型名,就可以使用在容器里面,譬如map<int, 类型名>,用于实现灵活的函数调用。
【示例】
例1:
typedef void (*PF)(int x);
void func1(int x){ cout<<"func1:"<<x<<endl;}
void func2(int x){ cout<<"func2:"<<x<<endl;}
void main()
{
PF pFunc; //声明一个函数指针只需要用PF类型名
pFunc = func1; //此处也可以使用pFunc = &func1;
pFunc(38);
pFunc = func2;
pFunc(99);
}
-----------------------------------------------------------------------------------------------
例2:
class CUtil
{
public:
CUtil();
typedef void (CUtil::*pUFunc)(int); //定义原型为void CUtil::func(int)的函数指针的别名为pUFunc
map<int, pUFunc> funcMap; //可以用做map容器的元素类型
void laner(int x);
void execute();
};
CUtil::CUtil()
{
funcMap[0] = &CUtil::laner; //这里初始化map容器,关联数字0和函数laner
}
void CUtil::laner(int x)
{
cout<<"laner:"<<x<<endl;
}
void CUtil::execute()
{
(this->*funcMap[0])(38); //调用map[0]关联的函数
//注意1:这里必须使用this->,否则会有error C2171: “*”: “void (__thiscall CUtil::* )(int)”类型的操作数非法的错误
//注意2:这里必须使用*解引用,才能实现函数调用,否则会有error C2064: 项不会计算为接受 1 个参数的函数的错误
}
void main()
{
CUtil pUtil = new CUtil();
pUtil->execute();
(pUtil->*(pUtil->funcMap[0]))(38); //与上一句等效,注意括号要用正确
}
二、C++ static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。


在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: 
//Example 1
#include <>
void fn();
static int n; //定义静态全局变量
void main()
{
  n=20;
  cout<<n<<endl;
  fn();
}
void fn()
{
 n++;
  cout<<n<<endl;
}
静态全局变量有以下特点: 
• 该变量在全局数据区分配内存; 
• 未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化); 
• 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;
静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的分布情况如下图:  
代码区
全局数据区
堆区
栈区
一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心的读者可能会发现,Example 1中的代码中将“sta

C++builder编程总结 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数51
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zhongxinado
  • 文件大小3.22 MB
  • 时间2018-08-18