lesson2(补充)取地址及const取地址操作符重载

简介: lesson2(补充)取地址及const取地址操作符重载

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

 

#include <iostream>
using namespace std;
class Date
{
public:
  Date()
    :_year(2023)
    ,_month(10)
    ,_day(28)
  {}
  Date* operator&()
  {
    return this;
  }
  const Date* operator&() const
  {
    return this;
  }
private:
  int _year;
  int _month;
  int _day;
};
int main()
{
  Date a;
  cout << &a << endl;
  const Date b;
  cout << &b << endl;
  return 0;
}

这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需

要重载,比如想让别人获取到指定的内容!

#include <iostream>
using namespace std;
class Date
{
public:
  Date()
    :_year(2023)
    ,_month(10)
    ,_day(28)
  {}
  Date* operator&()
  {
    return nullptr;
  }
  const Date* operator&() const
  {
    return this;
  }
private:
  int _year;
  int _month;
  int _day;
};
int main()
{
  Date a;
  cout << &a << endl;
  const Date b;
  cout << &b << endl;
  return 0;
}

甚至我们可以返回一个错误的地址(滑稽)

目录
相关文章
|
6月前
|
算法 编译器 程序员
【C/C++ 解惑 】 std::move 将左值转换为右值的背后发生了什么?
【C/C++ 解惑 】 std::move 将左值转换为右值的背后发生了什么?
68 0
|
3月前
|
Java 编译器 Go
常量能获取地址吗?
常量能获取地址吗?
|
5月前
|
编译器 C++
【C++】:const成员,取地址及const取地址操作符重载
【C++】:const成员,取地址及const取地址操作符重载
43 0
|
5月前
|
编译器 C++
【C++】类和对象④(类的默认成员函数:取地址及const取地址重载 )
本文探讨了C++中类的成员函数,特别是取地址及const取地址操作符重载,通常无需重载,但展示了如何自定义以适应特定需求。接着讨论了构造函数的重要性,尤其是使用初始化列表来高效地初始化类的成员,包括对象成员、引用和const成员。初始化列表确保在对象创建时正确赋值,并遵循特定的执行顺序。
|
6月前
|
编译器 C++
【C++】类与对象(运算符重载、const成员、取地址重载)
【C++】类与对象(运算符重载、const成员、取地址重载)
46 2
【C++】类与对象(三) 运算符重载 赋值重载 取地址及const取地址操作符重载(1)
【C++】类与对象(三) 运算符重载 赋值重载 取地址及const取地址操作符重载
|
6月前
|
编译器 C++
【C++】【C++的常变量取地址问题(对比C的不同)】const修饰的常变量&volatile修饰用法详解(代码演示)
【C++】【C++的常变量取地址问题(对比C的不同)】const修饰的常变量&volatile修饰用法详解(代码演示)
|
6月前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
|
6月前
|
存储 前端开发 程序员
一级指针和二级指针,取地址和不取地址调用函数区别及其应用
一级指针和二级指针,取地址和不取地址调用函数区别及其应用
|
6月前
|
编译器 C++
【c++】取地址及const取地址操作符重载
【c++】取地址及const取地址操作符重载
【c++】取地址及const取地址操作符重载