【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用

这篇具有很好参考价值的文章主要介绍了【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人主页:平行线也会相交💪
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创
收录于专栏【C++之路】💌
本专栏旨在记录C++的学习路线,望对大家有所帮助🙇‍
希望我们一起努力、成长,共同进步。🍓
【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用

前言

今天是521,先祝各位玩的开心哈!!!
前面已经更新过了C++类和对象中的前四个默认成员函数:分别是构造函数析构函数拷贝构造函数赋值运算符重载函数
今天主要是把剩下的两个默认成员函数(取地址及const取地址操作符重载)更新完,同时讲解一下const成员函数的使用。

取地址及const取地址操作符重载

这两个默认成员函数一般不用重新定义 ,编译器默认会生成。

我们知道内置类型是可以直接使用相关的运算符的,但是自定义类型如果要使用运算符的话是需要进行重载的,因为自定义类型是不可以直接使用相关的运算符的。

#include<iostream>
using namespace std;
class Date
{
public:
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Date da1;
	Date da2;
	cout << &da1 << endl;
	cout << &da2 << endl;
	return 0;
}

【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用

这个地方之所以可以直接对对象da1和da2进行&操作就是因为编译器自动生成了一个取地址操作符重载,当然我们也可以自己写,请看:

#include<iostream>
using namespace std;
class Date
{
public:
	Date* operator&()
	{
		cout << "Date* operator&()" << endl;
		return this;
	}
	const Date* operator&()const
	{
		cout << "const Date* operator&()const" << endl;
		return this;
	}
private:
	int _year = 23;
	int _month = 5;
	int _day = 21;
};
int main()
{
	Date da1;
	const Date da2;
	cout << &da1 << endl;
	cout << &da2 << endl;
	return 0;
}

【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用

//两个函数构成函数重载,只不过参数类型不同,参数分别是Date*、const Date*
Date* operator&()
{
	cout << "Date* operator&()" << endl;
	return this;
}
const Date* operator&()const
{
	cout << "const Date* operator&()const" << endl;
	return this;
}

什么场景下会使用取地址及const取地址操作符重载呢?
不想让其他人取到的普通对象的地址,请看:
【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用

const成员函数的使用

什么是const成员函数?

将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。

这里要特别强调一下:

const修饰的是成员函数中的*this,而不是this,即this指针指向的内容不可更改(如const Date* this),但是this指针自身是可以修改的Date* const thisthis指针自身是不可更改的,但是其指向的内容可以更改。

【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用
修改方式如下:

void Print()const
{
	cout << _year << "-" << _month << "-" << _day << endl;
}

成员函数后面加上const之后,普通对象(权限缩小)和const对象(权限平移)都可以进行调用。const修饰的是this
但是并不是所有的成员函数都要加上const。那么什么场景下我们我们要加上const呢?

要修改对象成员函数的对象不能加const。就比如说+=-=的赋值重载运算符成员函数。因为我们加上const修饰对象时,this指针指向的内容不可以修改。
所以只要我们不修改成员变量的话都是可以加上const。

再来举个例子,请看:
【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用

总结
并不是所有成员函数后面都可以加const,因为对于想要修改对象成员变量的函数是不可以加const的。 同时,只要成员函数内部不修改成员变量,都应该加const,这样的话const对象和普通对象就都可以进行调用了。

好了,以上就是【C++】类和对象(中)的最后一部分内容,【C++】类和对象(中)主要讲解了六个默认成员函数的内容。其中最重要的就是前四个默认成员函数:构造函数析构函数拷贝构造函数赋值运算符重载函数

就到这里啦,再见各位!!!

【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用文章来源地址https://www.toymoban.com/news/detail-472813.html

到了这里,关于【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包