
// 可以,如果在vs2008下面,则要用到tr1,如果在vs2012下,则在命名空间std下面,有相应函数,这要用到std::function和std::bind(vs2012里面),示例如下:
#include <iostream>
#include <functional>
#include <memory>
class MyClass
{
public:
MyClass(){};
~MyClass(){};
void func(int nInterger)
{
std::cout<<nInterger<<std::endl;
};
};
void main(void)
{
std::function<void(int)> func;
MyClass a;
func = bind(&MyClass::func, &a, std::placeholders::_1);
func(1000);
// 输出1000
}
// 下面是一个例子
http://blogcsdnnet/ch2065/article/details/12853195
虾米意思?是指类的成员变量是否可以指向类中的成员函数吗?如果这样子的,类的成员函数指针就是用来起这个作用,mfc消息路由机制也是机遇此原理。#include <stdioh>class A{public: A() \/\/ Ctor { m_pfn1 = A::foo; \/\/ 有没有取地址符号一样 m_pfn2 = &A::bar; (this->m_pfn1)(); (this->m_pfn2)(0); } void foo(){printf("foo\n");} \/\/ 类函数 virtual void bar(int){printf("bar\n");} void (A::m_pfn1)(); \/\/ 类函数指针成员变量 void (A::m_pfn2)(int); \/\/ 类函数指针成员变量};int _tmain(int argc, _TCHAR argv[]){ \/\/ 1 类函数指针成员变量的使用 A a; A p = &a; (a(am_pfn1))(); (a(am_pfn2))(0); \/\/ 多态 (p->(p->m_pfn1))(); (p->(p->m_pfn2))(0); \/\/ 多态 \/\/ 2 类外函数指针变量的使用 typedef void (A::MemFunPtr)(); MemFunPtr memPtr = &A::foo; (amemPtr)(); (p->memPtr)(); return 0;}\r\n补充:\r\n-> 和 是C++新增加的 *** 作符号,专用类成员指针变量取址(成员函数指针,成员变量指针)\r\n
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)