加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读