美文网首页Exceptional C++
【Exceptional C++(21)】自动转换

【Exceptional C++(21)】自动转换

作者: downdemo | 来源:发表于2018-01-30 13:22 被阅读14次
    • 把string作为C风格的const char*来访问通常很有用,实际上string有一个返回cosnt char*的成员函数c_str()就是完成这个任务的
    string s1("hello"), s2("world");
    strcmp(s1, s2); // 错误
    strcmp(s1.c_str(), s2.c_str()); // 正确
    
    • 标准的string不具有也不应该具有向const char*自动转换的能力,隐式转换一般是不安全的,它会影响重载解析且会使错误的代码被偷偷编译通过
    • 如果存在string到const char*的自动转换,这个转换动作将会在任何编译器认为需要的地方被调用,这样会造成很多问题
    string s1, s2, s3;
    s1 = s2 - s3; // 或许本来想要+
    
    • 减法是错误的,但如果存在string到const char*的自动转换,这段代码就可以通过编译

    相关文章

      网友评论

        本文标题:【Exceptional C++(21)】自动转换

        本文链接:https://www.haomeiwen.com/subject/laxczxtx.html