21xrx.com
2024-12-22 23:31:10 Sunday
登录
文章检索 我的文章 写文章
C++的赋值操作符重载
2023-07-05 04:41:12 深夜i     --     --
C++ 赋值操作符重载 重载

C++是一种强大的编程语言,它允许开发者对操作符进行重载。其中,赋值操作符(=)也可以被重载,这样可以为自定义类型创建自定义的赋值行为。

在C++中,赋值操作符通常用于将一个对象的值赋给另一个对象。对于基本数据类型,赋值操作符的行为是已知的,但对于自定义的类型,赋值操作符的行为则需要开发者自己定义。

例如,假设我们有一个自定义的类型,叫做“Person”。我们可以通过重载赋值操作符,来定义如何将一个 Person 对象的值赋给另一个 Person 对象。

下面是一种 Person 类型的实现:


class Person {

public:

  Person() {}

  Person(std::string name, int age)

    m_name = name;

    m_age = age;

  

  std::string getName()

    return m_name;

  

  int getAge()

    return m_age;

  

  // 重载赋值操作符

  Person& operator=(const Person& other) {

    m_name = other.m_name;

    m_age = other.m_age;

    return *this;

  }

private:

  std::string m_name;

  int m_age;

};

在这个例子中,我们重载了赋值操作符。可以看到,我们使用了 const& 作为参数,这是因为我们不想修改 other 对象的值。返回值是一个指向当前对象的引用,这是为了实现方法的链式调用,例如 `p1 = p2 = p3`。

在重载赋值操作符时,需要确保其符合以下原则:

1.赋值操作符应返回一个指向其本身的引用;

2.参数应是 const 类型引用;

3.应该在函数内部检查自我赋值,以避免内存泄漏。

总结来说,重载赋值操作符可以让自定义类型的对象实现自定义的赋值行为。在实现时,需要注意保持符合原则,以确保代码的正确性和可维护性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复