C/C++this指针、空指针、野指针和引用

本文详细介绍了C/C++中的this指针,包括其常识性问题和链式访问对象成员的示例。接着讨论了空指针和野指针的区别,以及通过空指针调用成员函数的情况。此外,还深入探讨了引用的概念,解释了引用是变量的别名,并与指针进行了对比。最后,讲解了如何使用常量初始化引用,强调了引用必须初始化且不能为NULL的重要规则。
摘要由CSDN通过智能技术生成

1. this指针

1.0 常识性问题

  1.  当对象访问类中的非静态成员时,编译器会自动将对象的地址隐式的作为第一参数传递给this指针。
  2.  类的静态成员属于整个类,不属于某一个对象,没有对象也就谈不上this指针。
  3.  编译器的实现决定this指针保存的位置。
  4.  this指针是一种特殊的指针,无法直接获取this指针的地址。
  5.  this指针并不是类的成员,不属于类的一部分。
  6.  this指针是一个常量,不能修改this指针的值。

1.1 链式访问对象成员

1.1.0 实例

图书馆类Book有两个数据成员:书名name(string)、定价price(double)。编写一个图书类。使用省却构造函数和析构函数,只需写出set和get方法,要求能通过链式访问设置的数据成员,并且方法的参数与数据成员同名。

class Book
{
private:
	string _name;
	double _price;
public:
	string getName() { return _name; }
	double getPrice() { return _price; }

	Book * setName(string name) { this->_name = name; return this; }
	Book * setPrice(double price) { this->_price = price;return this; }
};

int main()
{
	Book * book = new Book;
	book->setName("C\C++")->setPrice(65.5);
	cout << book->getName().c_str()<< " : " << book->getPrice() << endl;
	
}

为了支持链式访问,只需在函数中返回对象的地址,也就是this指针,返回类型为Book的指针。

1.2 通过空指针调用类的成员函数

1.2.0 下面程序中main函数分别通过空指针pTest调用类中四个函数,调用情况如下分析。

class Test
{
private:
	static int stat;
	int val;
public:
	static void func1() { cout << stat << endl; }
	void func2() { cout << "Test" <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值