why_coder 2017-11-19 09:24 采纳率: 100%
浏览 728

关于c++构造函数和类型转换的一个简单问题

#include
using namespace std;

class A{
public:
A(){cout<<"constructed";}
A(int){cout<<"constructed by convert";}
A(A& a){cout<<"constructed by copy";}
~A(){cout<<"distructed";}
};
void foo(A){;}
int main(){
A a1;
A a2=A(2);
system("pause");
return 0;
}
以上是源代码,在声明a2时我想的时应该先申请一个临时变量调用带int参数的构造函数,在调用复制构造函数用这个临时变量来构造a2,再析构临时变量,应该输出的是constructed by convertconstructed by copydistructed,可实际上只输出了constructed by convert,为什么呢?

  • 写回答

3条回答 默认 最新

  • 码农u号 2017-11-20 08:54
    关注

    构造函数是自动调用的。不能直接调用构造函数。
    A a2=A(2);是错的,应该改为:
    A a(2);

    A a2 = a;

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序