首页 > 试题广场 >

下面的陈述中哪个是正确的?

[不定项选择题]
下面的陈述中哪个是正确的?
  • 类必须提供至少一个构造函数
  • 默认构造函数的形参列表中没有形参。
  • 如果一个类没有有意义的默认值,则该类不应该提供默认构造函数。
  • 如果一个类没有定义默认构造函数,则编译器会自动生成一个,同时将每个数据成员初始化为相关类型的默认值。
出的题太抠文字了。
对于A:可能理解为必须程序员自定义构造函数。导致判断出错。
对于B:默认构造函数分为三类,默认普通构造函数(无形参);默认拷贝构造函数,形参为左值引用;默认移动构造函数(当类没有自定义任何的拷贝控制成员,且每个非静态变量都可移动时,会默认生成移动构造函数),形参为右值引用。
发表于 2018-09-13 17:06:57 回复(1)

A选项:一个类必须拥有构造函数,否则没发创建一个对象,达不了类的目的。
一开始本人对构造函数为私有的情况有所顾忌,但构造函数私有只是不想在外部直接定义对象出来,并不是说不可以定义对象。考虑实现一个单例类的例子:

class A{ 
public:
    void show( ){ 
        cout<<val<<endl;
    }
    static A* GetInstance( )
    { 
        static A instance;
        return &instance;
    }
private:
    A() { }
    static int val; 
};
int A::val = 0;

B选项:默认的构造函数除了构造还有 拷贝构造 右值构造(c++11),它们两个是带有参数的
D选项:编译器生成的默认构造函数只负责初始化有默认构造函数的成员对象,其他的一律不负责(int 等内置类型数据成员的初始化,这个该由程序员去做。

发表于 2018-09-10 00:52:16 回复(0)
这种题属于出题人水平真拉胯
发表于 2021-11-07 18:26:36 回复(1)
多选题,答案是A。。。
发表于 2023-06-27 19:29:47 回复(0)
默认构造函数分为三类,默认普通构造函数(无形参);默认拷贝构造函数,形参为左值引用;默认移动构造函数(当类没有自定义任何的拷贝控制成员,且每个非静态变量都可移动时,会默认生成移动构造函数),形参为右值引用。
发表于 2023-05-10 21:37:29 回复(0)
B选项正确解释是有默认实参的构造函数也算默认构造函数,这种函数调用时不用提供实参
发表于 2021-02-19 13:36:39 回复(0)
若只题目,建议屏蔽
发表于 2023-12-22 21:43:40 回复(0)
我裂开来
发表于 2022-09-26 11:39:58 回复(0)
1. 题目类型:不定项选择题 2. 题目描述:下面的陈述中哪个是正确的? 3. 选项内容 - A. 类必须提供至少一个构造函数 - B. 默认构造函数的形参列表中没有形参。 - C. 如果一个类没有有意义的默认值,则该类不应该提供默认构造函数。 - D. 如果一个类没有定义默认构造函数,则编译器会自动生成一个,同时将每个数据成员初始化为相关类型的默认值。 正确答案是:B, D 解释: - A选项是错误的,因为类不是必须提供至少一个构造函数。如果类没有定义任何构造函数,编译器会自动生成一个默认构造函数。 - B选项是正确的,因为默认构造函数是一个没有参数的构造函数。 - C选项是错误的,因为即使类没有有意义的默认值,它仍然可以提供一个默认构造函数,这个默认构造函数可能不执行任何操作。 - D选项是正确的,因为如果类没有定义默认构造函数,编译器会自动生成一个,并且会根据数据成员的类型初始化它们为默认值。
发表于 2024-10-25 10:57:55 回复(0)
智障题目……
发表于 2024-01-16 14:02:08 回复(0)
什么迅雷😅😅😅
发表于 2022-02-16 10:22:43 回复(0)
a有啥问题
发表于 2021-03-04 08:48:51 回复(0)