C++ 类成员函数作为参数】的更多相关文章

#include <iostream> using namespace std; typedef int int32_t; struct IMsgBody{ int body; }; struct Arg{ int arg; }; class A; typedef int32_t (A::*GetArg_Fun)(IMsgBody *pMsgBody, Arg *stArg); //函数指针 class A { public: A(){} ~A(){} int32_t GetArg_GameE…
类成员函数: bool operator ==(const point &a)const { return x==a.x; } 友元函数: friend bool operator ==(const point &a,const point &b) { return a.x==b.x; } 两种重载方式的比较: (1)单目运算符.=.().[].->使用类成员函数,其它双目运算符使用友元函数 (2)类型转换函数只能定义为类成员函数 (3)运算会修改类成员是使用类成员函数 (4…
C++类成员函数的重载.覆盖和隐藏区别? a.成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无.b.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类):(2)函数名字相同:(3)参数相同:(4)基类函数必须有virtual 关键字.c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同.此时,不论有无virtual关键字,基类…
在C++中,成员函数指针作为参数传递给其他函数和普通函数指针的传递是不同的,首先 我们来回顾一下普通函数指针的传递方法: //-------------------------------------------------------------------------- int fun1(int i){          return i; } void fun2(int j, int (*p)(int)){          cout << p(j); } void main() {  …
getline函数的作用是从输入流中读取一行字符,其用法与带3个参数的get函数类似.即    cin.getline(字符数组(或字符指针), 字符个数n, 终止标志字符) [例13.7] 用getline函数读入一行字符. #include <iostream> using namespace std; int main( ) { ]; cout<<"enter a sentence:"<<endl; cin>>ch; cout<…
C++类中的常见函数. #@author: gr #@date: 2015-07-23 #@email: forgerui@gmail.com 一.constructor, copy constructor, copy assignment, destructor 1. copy constructor必须传引用,传值编译器会报错 2. operator= 返回值为引用,为了连续赋值 3. operator=需要进行自赋值判断 4. copy constructor, operator= 都需要…
#include <iostream> class A { public: void func() { std::cout << "Hello" << std::endl; } void func(int k) { } }; class B : public A { public: using A::func; // 把这句注释掉试试,嘿嘿 void func(int i) { } }; int main() { B b; b.func();//编译…
我们知道ATL(活动模板库)是一套很小巧高效的COM开发库,它本身的核心文件其实没几个,COM相关的(主要是atlbase.h, atlcom.h),另外还有一个窗口相关的(atlwin.h), 所以拿来学习应该是很方便的.但是因为ATL的代码充满了模板和宏,内部还夹杂着汇编,所以如果没有比较丰富的C++模板和系统底层的知识,一般人会看得一头雾水. 下面我们主要分析一下ATL中的一些汇编代码. ATL中出现汇编代码主要是2处,一处是通过Thunk技术来调用类成员函数处理消息:还有一处是通过打开_…
在C++中,成员函数的指针是个比较特殊的东西.对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用.但对成员函数来说,常规类型转换是通不过编译的,调用的时候也必须采用特殊的语法.C++专门为成员指针准备了三个运算符: "::*"用于指针的声明,而"->*"和".*"用来调用指针指向的函数. // Thunk.cpp : Defines the entry point for the console applicatio…
最近在看C++动态绑定问题时(理解静态绑定时)发现的问题:能用空指针调用类的成员函数(gcc,vs2013下都可以). 例子: class animal { public: void sleep(){ cout << "animal sleep" << endl; } void breathe(){ cout << "animal breathe haha" << endl; } }; class fish :publ…