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;
}

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

目录
相关文章
|
3月前
|
存储 编译器 C语言
C语言:数组名作为类型、作为地址、对数组名取地址的区别
在C语言中,数组名可以作为类型、地址和取地址使用。数组名本身代表数组的首地址,作为地址时可以直接使用;作为类型时,用于声明指针或函数参数;取地址时,使用取地址符 (&),得到的是整个数组的地址,类型为指向该类型的指针。
|
5月前
|
Java 编译器 Go
常量能获取地址吗?
常量能获取地址吗?
|
7月前
|
编译器 C++
【C++】:const成员,取地址及const取地址操作符重载
【C++】:const成员,取地址及const取地址操作符重载
58 0
|
7月前
|
编译器 C++
【C++】类和对象④(类的默认成员函数:取地址及const取地址重载 )
本文探讨了C++中类的成员函数,特别是取地址及const取地址操作符重载,通常无需重载,但展示了如何自定义以适应特定需求。接着讨论了构造函数的重要性,尤其是使用初始化列表来高效地初始化类的成员,包括对象成员、引用和const成员。初始化列表确保在对象创建时正确赋值,并遵循特定的执行顺序。
【C++】类与对象(三) 运算符重载 赋值重载 取地址及const取地址操作符重载(1)
【C++】类与对象(三) 运算符重载 赋值重载 取地址及const取地址操作符重载
|
8月前
|
编译器 C++
【C++】类与对象(运算符重载、const成员、取地址重载)
【C++】类与对象(运算符重载、const成员、取地址重载)
60 2
|
8月前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
|
8月前
|
编译器 C++
【c++】取地址及const取地址操作符重载
【c++】取地址及const取地址操作符重载
【c++】取地址及const取地址操作符重载
|
8月前
|
存储 前端开发 程序员
一级指针和二级指针,取地址和不取地址调用函数区别及其应用
一级指针和二级指针,取地址和不取地址调用函数区别及其应用
|
8月前
lesson2(补充)关于>>运算符和<<运算符重载
lesson2(补充)关于>>运算符和<<运算符重载
34 0