读书人

有关问题有些多希望解答多谢

发布时间: 2012-04-08 14:38:30 作者: rapoo

问题有些多,希望解答,谢谢!
#include<iostream.h>

class A
{
int i;
public:
A(){i=0;}
void add(){i++;}
A*sp(){return this;}
int ls(A*s){return s->i;}//这是什么意思啊?
};
A*p[2];//他放在main里面和外面结果都一样,有什么区别?
void main()
{
A a1,*a2=new A;
p[0]=a1.sp();//p[0]:指向a1首地址,a1是数组吗,哪里看的出来?
p[1]=a2;
p[0]->add();
a2->add();
p[1]->add();
cout<<"a1--this:"<<p[0]<<" a2--this:"<<p[0];
cout<<"\ni--(a1):"<<p[1]->ls(p[0])<<" i--(a2):"<<p[0]->ls(p[1]);//p[1]->ls(p[0])和p[0]->ls(p[1])是什么意思?
}

[解决办法]
A*p[2];//表面来看,这个在main外边是全局的,不光main能用,别的函数也能用,在main里边就是局部的,只有main能用
[解决办法]
p[0]=a1.sp();//p[0]:指向a1首地址,a1是数组吗,哪里看的出来?
a1不是数组,是个被实例化了的类,存储在内存中,那么他就有地址,那么他就有首地址
[解决办法]
cout<<"\ni--(a1):"<<p[1]->ls(p[0])<<" i--(a2):"<<p[0]->ls(p[1]);//p[1]->ls(p[0])和p[0]->ls(p[1])是什么意思?
这个就是输出了,p[1]->ls(p[0])这个就是用p[1]输出p[0],就相当于下边
cout<<"\ni--(a1):"<<p[0]->i<<" i--(a2):"<<p[1]->i;//但是i是私有的,所以不能这样输出
[解决办法]

C/C++ code
A a1,*a2=new A;
[解决办法]
p[0]=a1.sp();//p[0]:指向a1首地址,a1是数组吗,哪里看的出来?

a1不是数组, a1.sp()返回a1这个对象的地址,然后赋值给p0]


探讨
#include<iostream.h>

class A
{
int i;
public:
A(){i=0;}
void add(){i++;}
A*sp(){return this;}
int ls(A*s){return s->i;}//这是什么意思啊?
};
A*p[2];//他放在main里面和外面结果都一样,有什么区别?
void main()
{
A a1……

[解决办法]
int ls(A*s){return s->i;}//这是什么意思啊?
s指向A,返回当前i的值
p[0]=a1.sp();//p[0]:指向a1首地址,a1是数组吗,哪里看的出来?
a1 是对象,a1.sp()返回的是this指针,把当前值付给p[0].
A*p[2] 是指针数组对象
p[1]->ls(p[0])和p[0]->ls(p[1]) 就是调用类A的函数
[解决办法]
第二个问题,。。。。。。

什么代码啊,, 没耐心看




探讨
#include<iostream.h>

class A
{
int i;
public:
A(){i=0;}
void add(){i++;}
A*sp(){return this;}
int ls(A*s){return s->i;}//这是什么意思啊?
};
A*p[2];//他放在main里面和外面结果都一样,有什么区别?
void main()
{
A a1……

读书人网 >C++

热点推荐