指针
来源:互联网 发布:淘宝商家怎么找客服 编辑:程序博客网 时间:2024/06/01 09:25
// gcc version egcs-2.91.57 19980901(egcs-1.1 release)
#include
using namespace std;
class point{
intmoveCenterPoint();
public:
intx,y;
point(int=1,int=1);
intinstance();
friend intf(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内容
//------------------------------------------
//类成员指针,对象成员指针
//类数据成员指针
intpoint::*x1 = &point::x;
// 对象数据成员指针
pointp;
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
return0;
}
//x,y默认值都为1,且如果point传递参数则x=a,y=b
point::point(int a,int b){
x = a;
y = b;
}
int point::instance(){
returnx*x+y*y;
}
int point::moveCenterPoint(){
returnx*(x+1)+y*(y+1);
}
int f(point &p){
returnp.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){
}