瀏覽代碼

Add move semantics to `Ref`.

Lukas Tenbrink 5 月之前
父節點
當前提交
28d6cf859a
共有 1 個文件被更改,包括 14 次插入0 次删除
  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);