c – “操作符char *”问题
发布时间:2020-12-16 03:21:17 所属栏目:百科 来源:网络整理
导读:以下代码预计打
以下代码预计打印“??凯文”
但是,它是打印垃圾价值.我已经检查了调试器.由“操作符char *”调用返回的指针无效.任何想法? class Wrapper { private: char* _data; public: Wrapper(const char* input) { int length = strlen(input) + 1; _data = new char[length]; strcpy_s(_data,length,input); } ~Wrapper() { delete[] _data; } operator char*() { return _data; } }; int main() { char* username = Wrapper("kevin"); printf(username); return 0; } 解决方法
问题是您的Wrapper对象被构造为临时的并立即被销毁.通过操作符char *,您返回一个指针,该指针在被破坏时被Wrapper对象删除.
让它工作: Wrapper wrapper("Kevin"); char* username = wrapper; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |