标题 this和static
老师上课讲这一块内容的时候,就不理解。现在把他整理一下。
①this指针:指向成员函数所指向的对象
-------------理解this指针,首先将C++翻译成C
class Test
{
public:
int num;
void set(int n)
{
num = n;
}
};
int main()
{
Test t;
t.set(20);
return 0;
}
struct Test
{
int num;
};
void set(struct Test* this, int n)
{
this->num = n;
}
int main()
{
struct Test t;
set(&t ,20);
return 0;
}
-----------再来看下面这段程序,理解this指针
class Test
{
public:
int p;
Test set(int p)
{
this->p++;
return *this;
}
};
class A
{
public:
int i = 0;
void print()
{
cout << i << "hello" << endl;
}
//void print(A* this)
//{
// cout << this->i << "hello" << endl;
//}
};
int main()
{
A* p = NULL;
p->print();// print(p) 不会输出i,会输出hello;
return 0;
}
②static:
----------------普通成员变量每个对象有各自的一份,而静态成员变量一共就一份,为所有对象共享。并不具体作用与某一个对象。本质上是全局变量。
访问静态成员的四种方法:(静态成员函数不能访问非静态成员变量,不能调用非静态成员函数)
using namespace std;
class Test
{
public:
int p;
static int q;
static void func()
{
cout << q << endl;
}
};
int Test::q = 1;
int main()
{
Test::func();//类名::成员名
Test t;
t.func();//对象名.成员名
Test* m;
m->func();//指针->成员名
Test n;//引用.成员名
Test& num = n;
num.func();
}
--------------sizeof运算符不会计算静态成员变量。
class Test
{
public:
int p;
static int q;
};
得到结果:sizeof(Test) == 4;
来源:CSDN
作者:可爱的脸蛋
链接:https://blog.csdn.net/weixin_46031998/article/details/104621887