练习7.43;假定有一个名为NoDefault的类,它有一个接受int的构造函数,但是没有默认构造函数。定义类C,C有一个NoDefault类型的成员,定义C的默认构造函数。
答:见程序 练习7.43.cpp 说明:C不能调用,因为NoDefault缺少默认的构造函数
练习7.44:下面这条声明合法吗?如果不,为什么?
Vector<NoDefault> vec(10);
答:不合法,NoDefault缺少默认的构造函数
练习7.45:如果在一个练习中定义的vector的元素类型是C,则声明合法吗?为什么?
答;不合法,还是因为NoDefault缺少默认的构造函数
练习7.46:下面哪些论断是不正确的?为什么?
(a) 一个类必须至少提供一个构造函数 //正确
(b) 默认构造函数是参数列表为空的构造函数。//正确
(c) 如果对于类来说不存在有意义的默认值,则类不应该提供默认构造函数
//错误,参看262页7.5.3节默认构造函数的作用。
(d) 如果类没有定义默认构造函数,则编译器将为其生成一个并把每个数据成员初始化成相应类型的默认值。
//错误:编译器还没有那么强大,编译器只是按照自己的理解来合成一个默认构造函数