借用网上一个大佬的见解,程序如下:
#pragma once
#include "Header.h"
class MyString {
public:
MyString(): m_data(nullptr),m_size(0){
}
MyString(const char* data) : m_data(nullptr), m_size(0) {
cout << "左值引用!\n";
m_size = strlen(data);
m_data = new char[m_size + 1];
strcpy_s(m_data, m_size + 1, data);
}
MyString(MyString&& input) : m_data(nullptr), m_size(0) {
cout << "右值引用!\n";
m_data = input.m_data;
m_size = input.m_size;
input.m_data = nullptr;
input.m_size = 0;
}
~MyString()
{
delete[] m_data;
m_data = nullptr;
m_size = 0;
}
private:
size_t m_size;
char* m_data;
};
void func(MyString& str) {
cout << "lvalue_ref() called.\n";
}
void func(MyString&& str) {
cout << "rvalue_ref() called.\n";
}
void rValueRef() {
MyString str("Hello,cpp");
func(str);
//MyString rStr = move(str);
func(MyString(move(str)));
}