私はclassとobject.iに少し問題がありますが、このコードを持っていて、オブジェクトのアドレスを受け取りますが、何度何回増分してもメンバー関数にアクセスできます。私はそれが起こるとは思わないと思いますか?このクラスのオブジェクトはどのようにしてメンバー関数にアクセスできますか?
#include<iostream>
using namespace std;
class B
{
int a,d,b,c;
public:
void cl()
{
int f,m,b;
cout<<"\nvoid cl";
}
} obj;
int main()
{ B *m;
int *i;
m=&obj;
cout<<"\nsize of obj="<<sizeof(obj);
cout<<"\naddress of obj "<<&obj;
cout<<"\nvalue of m="<<m;
i=new int;
// for(int j=0;j<10;j++)
cout<<"\n value of i "<<*i;
for(int j=0;j<10;j++)
{ m++;
cout<<"\nvalue of m++ "<<m++;
m->cl();
} cout<<"\n";
}
、出力は物体の一部
[email protected]:~/Documents$ ./a.out
size of obj=16
address of obj 0x6013e0
value of m=0x6013e0
value of i 0
value of m++ 0x6013f0
void cl
value of m++ 0x601410
void cl
value of m++ 0x601430
void cl
value of m++ 0x601450
void cl
value of m++ 0x601470
void cl
value of m++ 0x601490
void cl
value of m++ 0x6014b0
void cl
value of m++ 0x6014d0
void cl
value of m++ 0x6014f0
void cl
value of m++ 0x601510
void cl
[email protected]:
コードでは未定義の動作が発生するため、何かが起こる可能性があります。 –
[nullポインタのクラスメンバーへのアクセス](http://stackoverflow.com/questions/669742/accessing-class-members-on-a-null-pointer)に非常によく似ています –