当前位置:   article > 正文

C++-this指针-常方法_c++ 类函数中不用this

c++ 类函数中不用this

1. this指针

1.1 this指针特性

  1. this指针的类型:类类型* const
  2. 只能在“成员函数”的内部使用
  3. this指针本质上其实是一个成员函数的形参,是对象调用成员函数,将对象的地址作为实参传递给this形参,所以对象中不存储this指针
  4. this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递的,不需要用户传递
  5. this->m_data = data或者写成(*this).m_data都是可以的
  6. this指针代表了当前对象的地址,一般情况下可以不用写this
  7. this指针存放在栈区,this指针不会为空

1.2 用法

class Test
{
public:
	void setName(char* name)
	{
		strcpy(this->name,name);
		//this->name = name;
	}
	void setAge(short age)
	{
		this->age = age;
	}
	char* showName()
	{
		return this->name;
	}
	short showAge()
	{
		return age;
	}
//protected:
private:
	char name[20];
	short age;
};

int main()
{
	Test t;
	t.setAge(20);
	t.setName("lixin");
	char* arr;
	arr = t.showName();
	cout << t.showAge() << endl;
	cout << arr << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

1.3 面试题

1.this指针存在哪里?

void SetDate (Test* const this, int data)
  • 1

  在计算机中实际的成员函数是这样的,但是this这个指针的这个参数是隐藏的,不需要编程人员去写,也只是通过this指针才能识别不同对象调用相同的方法
2.this指针可以为空吗?
  不可以,因为只有在类的成员函数中才存在this指针,而成员函数能调用肯定this指针也就不为空。

2. 常方法

2.1 写法

void setName(const char* name)
  • 1

  在常方法中,是不能修改值的,因此如果函数是不需要修改变量的值的情况下,最好加const。this指针其实就是使用了常方法进行定义的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/548194
推荐阅读
相关标签
  

闽ICP备14008679号