下面对构造函数的不正确描述是( )。 A. 构造函数可以重载 B. 构造函数可以设置默认参数 C. 系统可以提供默认的构造函数 D. 构造函数可以有参数,所以可以有返回值
时间: 2024-03-23 07:43:16 浏览: 74
不正确的描述是 D. 构造函数可以有参数,所以可以有返回值。构造函数没有返回值,因为它的作用是初始化对象的状态,而不是返回一个值。如果构造函数有返回值,那么就无法确定对象的状态是否正确初始化了。因此,构造函数是一个特殊的函数,它没有返回类型,也没有返回值。在 C++ 中,构造函数可以重载,可以设置默认参数,也可以由系统提供默认的构造函数。例如:
```c++
class Person {
public:
Person() {
cout << "default constructor" << endl;
}
Person(string name, int age) {
this->name = name;
this->age = age;
cout << "parameterized constructor" << endl;
}
Person(string name) : Person(name, 0) {
cout << "default age is 0" << endl;
}
private:
string name;
int age;
};
```
在上面的例子中,`Person` 类定义了三个构造函数:默认构造函数、带参数的构造函数和带默认参数的构造函数。其中,带默认参数的构造函数调用了带参数的构造函数进行对象的初始化。因此,构造函数可以重载,可以设置默认参数,也可以由系统提供默认的构造函数,但不能有返回值。
相关问题
下列关于构造函数的描述正确的是( )。 A. 一个类可以有多个构造函数,也就是说构造函数可以重载; B.构造函数与类同名,没有返回类型; C.构造函数可以带参数,也可以不带参数; D.一个类没有定义构造函数,就不能创建对象; E.类创建对象时,自动调用构造函数; F.类中未定义构造函数,编译系统自动提供一个不带参数的默认构造函数; G.类中定义了一个构造函数,系统就不会提供默认构造函数; H.程序员可以自己调用构造函数;
ABCF正确。
A. 一个类可以有多个构造函数,也就是说构造函数可以重载;
B. 构造函数与类同名,没有返回类型;
C. 构造函数可以带参数,也可以不带参数;
F. 类中未定义构造函数,编译系统自动提供一个不带参数的默认构造函数;
D、E、G、H不正确。
D. 一个类可以没有定义构造函数,但是编译器会自动提供一个默认构造函数;
E. 类创建对象时,编译器会自动调用构造函数来进行对象的初始化;
G. 如果类中定义了一个构造函数,编译器不会再自动生成默认构造函数;
H. 构造函数只能在对象创建时自动调用,不能手动调用。
关于拷贝构造函数说法不正确的是 A. 拷贝构造函数:用一个已存在对象初始化一个同类新对象B. 拷贝构造函数可以重载C. 如果类中没有显式定义拷贝构造函数,则系统自动生成一个缺省拷贝构造函数 D.函数名与类名相同,函数参数是常类型引用
关于拷贝构造函数,选项B是不正确的,拷贝构造函数不能重载。因为拷贝构造函数的参数是一个同类新对象的引用,如果允许重载,则会产生二义性。其他选项是正确的:
A. 拷贝构造函数:用一个已存在对象初始化一个同类新对象
C. 如果类中没有显式定义拷贝构造函数,则系统自动生成一个缺省拷贝构造函数
D. 函数名与类名相同,函数参数是常类型引用
阅读全文