指向成员函数的指针

原创 2016年05月31日 12:57:20
#include<iostream>
using namespace std;
class Base{
	public:
		virtual void say(){
			cout<<"Base"<<endl;
		}
		void doit(){
			cout<<"Base"<<endl;
		} 
};
class Derive:public Base{
	public:
		void say(){
			cout<<"Derive"<<endl;
		}
		void doit(){
			cout<<"Derive"<<endl;
		}
};
int main(){
	typedef void(Base::*bfunc)();
	typedef void(Derive::*dfunc)();
	bfunc func1=&Base::say;
	dfunc func2=&Derive::say;
	Base base;
	Derive derive;
	
	(base.*func1)();
	(derive.*func1)();
	//(base.*func2)();//错误 
	(derive.*func2)();
	cout<<"------------------------------------"<<endl;
	bfunc func3=&Base::doit;
	dfunc func4=&Derive::doit;
	
	Base base2;
	Derive derive2;
	
	(base2.*func3)();
	(derive2.*func3)();
	//(base2.*func4)();//错误 
	(derive2.*func4)();
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

如何使用指向类的成员函数的指针(详解!)

本文转自lishuhuakai的博客 我们首先复习一下”指向函数的指针”如何使用?  void print()   {   }   void (*pfun)(); //声明一个指向函数的指针,函数的...

C++中 指向成员函数的指针

Function pointers are a neat concept, since they basically allow the storage and passing around of f...

指向成员函数的指针

取一个非静态成员函数的地址,如果该函数是nonvirtual,则得到的结果是它在内存中真正的地址。然而这个值也不是完全的,它也需要被绑定于某个class object的地址上,才能够通过它调用该函数。...

C++指向类成员函数的指针详细解析

由于这几天在开发中要用到函数指针,所以就整理了一下关于函数指针的概念 首先 函数指针是指向一组同类型的函数的指针;而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指针,...

C++类成员函数指针2

  • 2012年11月17日 16:54
  • 4KB
  • 下载

C++指向成员函数的指针

首先 函数指针是指向一组同类型的函数的指针;而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指针,当然这里的成员函数更准确的讲应该是指非静态的成员函数。前者是直接指向函数地址的,...

第十六周oj刷题——Problem J: B3 指向基类的指针访问派生类的成员函数

Description领导类(Leader)和工程师类(Engineer)都是人类(Person)的派生类。请将下面代码中空缺的部分填上,使main函数中能通过指向Person类的指针,调用Leade...

指向public成员函数的指针

C++中,所谓普通成员函数,无非就是比普通函数在形参列表的最后,多了一个这个类型的this指针,本质上和一般的函数没有什么不同。而类的静态成员函数,则和普通函数完全一样。 所以声明函数指针时,对于类...

C++指向类成员函数的指针

最近在开发中用到了函数指针,于是想整理了一下有关函数指针的概念。O(∩_∩)O~ 首先 函数指针是指向一组同类型的函数的指针;而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指...

4.4 指向成员函数的指针

Q1:非静态成员函数的地址• 非静态成员函数地址值:○ 如果该函数是非虚函数,则得到的结果是其在内存中真正的地址○ 如果该函数是虚函数,则得到的结果是其在虚函数表中的索引值• 地址不完全性(数据成员的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:指向成员函数的指针
举报原因:
原因补充:

(最多只允许输入30个字)