Pārlūkot izejas kodu

Merge pull request #104649 from Ivorforce/move-semantics-ref-array-dict

Add move semantics to `Ref`
Thaddeus Crews 5 mēneši atpakaļ
vecāks
revīzija
f704113abe
1 mainītis faili ar 14 papildinājumiem un 0 dzēšanām
  1. 14 0
      core/object/ref_counted.h

+ 14 - 0
core/object/ref_counted.h

@@ -127,6 +127,15 @@ public:
 		ref(p_from);
 	}
 
+	void operator=(Ref &&p_from) {
+		if (reference == p_from.reference) {
+			return;
+		}
+		unref();
+		reference = p_from.reference;
+		p_from.reference = nullptr;
+	}
+
 	template <typename T_Other>
 	void operator=(const Ref<T_Other> &p_from) {
 		ref_pointer<false>(Object::cast_to<T>(p_from.ptr()));
@@ -159,6 +168,11 @@ public:
 		this->operator=(p_from);
 	}
 
+	Ref(Ref &&p_from) {
+		reference = p_from.reference;
+		p_from.reference = nullptr;
+	}
+
 	template <typename T_Other>
 	Ref(const Ref<T_Other> &p_from) {
 		this->operator=(p_from);