我有一个考试题是这样的:
酒吧可以用...
我必须选择正确的选项:
class Bar{
public:
Bar(std::string);
Bar(int a=10,double b=7.10, char c='e');
};
a)杆{4,2,6};
B)杆{“xyz”,2};
(c)酒吧(对、错);
d)横杠{5,“abc”};
e)酒吧();
我认为它肯定可以用a)
来构造(int
到char
的隐式转换).我也认为应该不能用b)
和d)
构造,因为const char*
到double
没有隐式转换.我认为Bar()
是函数原型,所以这是不可能的。那么c)
的真和假可以转换成int
和double
。所以我的想法是:a)
和d)
可以正确地构造Bar
。
我说的对吗?有经验的人能证实吗?
1条答案
按热度按时间vcirk6k61#
我认为Bar()是函数原型,所以这是毫无疑问的。
不,
Bar::Bar(int =10,double =7.10, char ='e')
声明了一个默认构造函数,所以Bar()
是完全有效的,并且将use the above default ctor。类似地,
Bar{4,2,6};
和Bar(true, false)
也将使用默认ctor。Demo