问题遇到的现象和发生背景
构造函数形参默认值,用make_unique创建对象,形参默认值失效。而改为new就可以
问题相关代码,请勿粘贴截图
class VBase
{
public:
VBase(){}
virtual ~VBase(){}
public:
virtual void Handle() = 0;
protected:
};
class Transfer : public VBase
{
public:
Transfer(const int& currDate = 20220209):m_currDate(currDate)
{
std::cout << m_currDate << std::endl;//此处有值20220209
}
~Transfer(){}
virtual void Handle()
{
std::cout << m_currDate << std::endl;//值为0
}
private:
const int& m_currDate;
};
int main()
{
std::unique_ptr<VBase> pTrans = std::make_unique<Transfer>();
pTrans->Handle();
return 0;
}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
make_unique怎么配合形参默认值使用