// gcc version egcs-2.91.57 19980901 (egcs-1.1 release)
#include
using namespace std;
class point{
int moveCenterPoint();
public:
int x,y;
point(int=1,int=1);
int instance();
friend int f(point &);
// 友元函数
};
int main(){
// 以int数据类型为例
int a = 1;
int b = 2;
// 常量指针 int const *i
int const *i = &a;
i = &b;
// 更改自己地址指向
// 指针常量 int *const j
int *const j = &a;
*j = b;
// 更改a内容
//------------------------------------------
// 类成员指针,对象成员指针
// 类数据成员指针
int point::*x1 = &point::x;
// 对象数据成员指针
point p;
int *y1 = &p.y;
cout<<p.instance()<<endl;
// 1*1+1*1 = 2
p.*x1 = 2;
cout<<p.instance()<<endl;
// 2*2+1*1 = 5
*y1 = 3;
cout<<p.instance()<<endl;
// 2*2+3*3 = 13
// 类成员函数指针
int (point::*pInstance)();
pInstance = &(point::instance);
// 不同编译器写法不同
cout<<(p.*pInstance)()<<endl;
// 13
//------------------------------------------
// 函数指针
int (*p1)(point &);
p1 = &(f);
// 不同编译器写法不同
cout<<(*p1)(p)<<endl;
// 2*(2+1) + 3*(3+1) = 18
return 0;
}
// x,y默认值都为1,且如果point传递参数则x=a,y=b
point::point(int a,int b){
x = a;
y = b;
}
int point::instance(){
return x*x+y*y;
}
int point::moveCenterPoint(){
return x*(x+1)+y*(y+1);
}
int f(point &p){
return p.moveCenterPoint();
}
#include
using namespace std;
class point{
public:
};
int main(){
}
// x,y默认值都为1,且如果point传递参数则x=a,y=b
point::point(int a,int b){
}
int point::instance(){
}
int point::moveCenterPoint(){
}
int f(point &p){
}