关于C中构造函数的奇怪行为

关于C中构造函数的奇怪行为,第1张

概述我直接给你看了代码. #include <iostream>#include <stdio.h>class A { public: A(const std::string& name){ std::string aname = "HAHA_" + name; std::cout << aname << std::endl; } ~A(){ 我直接给你看了代码.

#include <iostream>#include <stdio.h>class A {   public:   A(const std::string& name){    std::string aname = "HAHA_" + name;    std::cout << aname << std::endl;    }    ~A(){         std::cout << "Done." << std::endl;    }};int main() {   size_t len = 5;   char szTmp[30] ={0};   snprintf(szTmp,sizeof(szTmp),"GetList_V2_%zd",len);   A a(std::string(szTmp));   return 0;}

预期结果如下:

HAHA_GetList_V2_5Done.

但它根本没有输出任何东西.当我替换A a(std :: string(szTmp));同
A a(szTmp);,一切都好.很长一段时间我很困惑.

解决方法
A a(std::string(szTmp));

This is a function declaration,信不信由你!所以,没有构建A.

相反,写下这个:

A a{std::string(szTmp)};

或者,由于存在对std :: string的隐式转换,因此以下任何一个都足够:

A a{szTmp};A a(szTmp);
总结

以上是内存溢出为你收集整理的关于C中构造函数的奇怪行为全部内容,希望文章能够帮你解决关于C中构造函数的奇怪行为所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1216944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存