//这个练习试图弄清对象的指针,对象成员的指针,以及引用的问题。
#include <iostream>
using namespace std;
class A{
public:
A(void){
cout << "A Construction!" << endl;
}
void print(void) {
cout << "A print()!" << endl;
}
void print(int x) {
this->x = x;
cout << this << " :" << this->x << endl;
}
private:
int x;
};
int main(void){
A* a = new A();
A& b = (*a);
(*a).print();
b.print();
int *p;
int*& q = p;
A*& c = a;
c->print(200);
c->print(30);
c->print(2000);
void (A::*func0)(void) = A::print;
void (A::*func1)(int) = A::print;
void (A::*func2)(int) = A::print;
(c->*func0)();
(c->*func1)(20000);
(c->*func2)(0xfe);
func2 = (void (A::*)(int))func0;
(c->*func1)(0xff);
}
/*
C:\Users\Administrator>g++ -o test44.exe test44.cpp
C:\Users\Administrator>test44
A Construction!
A print()!
A print()!
0x581580 :200
0x581580 :30
0x581580 :2000
A print()!
0x581580 :20000
0x581580 :254
0x581580 :255
*/