#include暑期编程PK赛 得CSDN机械键盘等精美礼品!using namespace std; class CData { public: CData() = delete; CData(const char* ch) : data(ch) { std::cout << "CData(const char* ch)" << std::endl; } CData(const std::string& str) : data(str) { std::cout << "CData(const std::string& str)" << std::endl; } CData(std::string&& str) : data(str) { std::cout << "CData(std::string&& str)" << std::endl; } ~CData() { std::cout << "~CData()" << std::endl; } private: std::string data; }; template CData* Creator(T&& t) { return new CData(std::forward (t)); //return new CData(std::move(t)); //return new CData(t); } void Forward() { const char* value = "hello"; std::string str1 = "hello"; std::string str2 = " world"; CData* p = Creator(str1 + str2); CData* p1 = Creator(value); CData* p2 = Creator(str1); delete p; } int main() { Forward(); }



