1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 为什么C++静态成员函数不能访问非静态成员变量 不能调用非静态成员函数?

为什么C++静态成员函数不能访问非静态成员变量 不能调用非静态成员函数?

时间:2022-03-06 10:59:34

相关推荐

为什么C++静态成员函数不能访问非静态成员变量 不能调用非静态成员函数?

先来看一个简单的程序:

[cpp]view plaincopy

#include<iostream>

usingnamespacestd;

classA

{

public:

intx;

voidprint()

{

cout<<this<<endl;

}

};

intmain()

{

Aa;

cout<<&a<<endl;//0013FF7C

a.print();//0013FF7C

Aaa;

cout<<&aa<<endl;//0013FF78

aa.print();//0013FF78

return0;

}

再看看看:

[cpp]view plaincopy

#include<iostream>

usingnamespacestd;

classA

{

public:

intx;

voidstaticprint()

{

cout<<this<<endl;//static成员函数没有this指针

}

};

intmain()

{

Aa;

cout<<&a<<endl;

return0;

}

static函数没有this指针, 故不能访问类的非静态成员变量, 不能调用非静态的成员函数。且看:

[cpp]view plaincopy

#include<iostream>

usingnamespacestd;

classA

{

public:

intx;

voidstaticprint()

{

cout<<x<<endl;//没有this,所以不知道x是啥

}

};

intmain()

{

return0;

}

[cpp]view plaincopy

#include<iostream>

usingnamespacestd;

classA

{

public:

intx;

voidtest()

{

}

voidstaticprint()

{

test();//没有this,所以不知道test是啥

}

};

intmain()

{

return0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。