构造函数形参默认值,用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怎么配合形参默认值使用
构造函数中不放参数的时候,调用的是默认构造函数,需哟你在Transfer类中重写无参构造函数。
Transfer构造函数改成下面的
Transfer(const int& currDate):m_currDate(currDate)
{
std::cout << m_currDate << std::endl;//此处有值20220209
}
Transfer():m_currDate(20220209)
{
std::cout << m_currDate << std::endl;//此处有值20220209
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!