More C++ Classes: Copy and Move Semantics: Listing 2

Transferring ownership with move semantics.

// move constructor
tree::tree(tree<T>&& other) : root_{ move(other.root_) } {}

// move assignment
tree::tree& operator=(tree<T>&& other)
{
  // if the left-side tree isn't empty, it's cleared. Existing nodes are deleted.
  if (!is_empty())
  {
    root_.reset(nullptr);
  }
  // if the other tree isn't empty, its root is moved.
  if (!other.is_empty()) { root_ = move(other.root_); }

  return *this;
}

About the Author

Diego Dagum is a software architect and developer with more than 20 years of experience. He can be reached at [email protected].

comments powered by Disqus

Featured

  • VS Code 1.127 Further Integrates Advanced Browser-AI Tech

    Microsoft's July 1 Visual Studio Code update continues a recent push to make the editor's integrated browser a more capable development surface -- and a more useful tool for AI agents.

  • Support Vector Regression with SGD Training Using C#

    Support vector regression can predict numeric values effectively, and this article shows how to implement and train a kernel SVR model in C# using stochastic sub-gradient descent.

  • New GitHub Switch Limits Repo Issue Creation to Collaborators Only

    After publicly touting pull request limits as a way to cut maintainer noise, GitHub is taking the same idea further with a new setting that lets repository admins restrict issue creation to collaborators only.

  • Uno Platform Helps Ship First Stable SkiaSharp 4.0 Release for 2D .NET Graphics

    SkiaSharp 4.148.0 is the first stable v4 release, bringing a newer Skia engine, API cleanup, performance work and a Microsoft-Uno co-maintenance model.

Subscribe on YouTube