错误:VS调试构造函数时,直接跳过

1. 问题

  • 在写了一个类后,用它创建对象时,发现该有的现象没有:
    在这里插入图片描述

    int main()
    {
    	zzz::Data<int, int> d();
    	zzz::Data<int, char>d2();
    
    	zzz::vector<int> v(3, 5);	//用来测试其他代码是否正常
    	cout << v << endl;
    
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    这是打印的对象 v 的内容,人家是正常的。

  • 所以,打断点观察一下:
    在这里插入图片描述
    发现这个位置打不上断点,会直接跳走。

2. 解决

其实,问题是在对象创建那里:

zzz::Data<int, int> d();
zzz::Data<int, char>d2();

大家有看出问题吗?

  • 这里不是进行了对象的创建,而是进行了函数的声明:
    在这里插入图片描述
    所以,看左边三行代码的格式,所以其实上面两个也根本不是在创建 Data 类型的对象,而是函数声明,如第一个就是在声明一个返回值是 Data<int,int>,名字为 d 的,无参数的函数。

  • 所以,我们对构造进行修改:

    int main()
    {
    	zzz::Data<int, int> d;
    	zzz::Data<int, char>d2;
    
    	zzz::vector<int> v(3, 5);
    	cout << v << endl;
    
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    结果对了。

3. 总结

在这里插入图片描述


本文到这里就结束了,如果对您有帮助,希望得到您的一个赞!🌷
如有错漏,欢迎指正!😄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值