首页 > 试题广场 >

对于构造方法( constructor )描述正确的有:()

[不定项选择题]

对于构造方法( constructor )描述正确的有:()

  • 构造方法没有返回类型
  • 构造方法一定是public的方法
  • 如果我们没有显示定义构造方法,系统会提供一个缺省的
  • 构造方法不能重载
A:构造方法没有返回类型。正确
B.错误。构造方法的访问修饰符是可以为任意的。比如最常见的当我们构造单例时需要将构造函数私有化。
C.正确。当没有显示定义构造器时,会默认提供一个无参的构造器。
D.错误。重载是指拥有相同方法名,但方法参数列表不同。构造器支持重载,如下例子:
class Student{
    int id;
    String name;
    
    public Student(){
    }
    public Student(int id){
        this.id = id;    
    }   
    public Student(String name){
        this.name = name;
    }
}          
这样,我们可以根据不同的初始化字段提供不同的构造函数供客户端方便使用。

总:答案为AC
编辑于 2016-12-31 16:02:57 回复(2)
        构造函数是用来初始化的,而不是说没有构造函数就无法构造对象,其实没有写构造函数编译器会自动生成是有条件的,仅当类成员有设定初始值的时候才会默认生成构造函数,否则是不生成的,这一点查看汇编代码是可以得到证明的,如果有写了构造函数就一定会看到调用构造函数的汇编代码,如果没写构造函数类成员也没设初值的话其实汇编代码里面根本不会有调用构造函数的语句,这绝对是流传广泛的谬误。
        假设一个类写了无参构造函数,且成员变量均无初始值,创建对象时会看到调用构造函数的汇编语句,但是同样情况下,不写任何构造函数就不会看到有调用构造函数的汇编语句,如果一定要说系统会提供一个缺省的,那么提供了又不调用是何道理?C++何时提倡付出不必要的性能开销了?
        C选项应该改成可能系统会提供一个缺省的或者必要时会提供一个缺省的才准确。
编辑于 2021-11-04 16:42:27 回复(0)
这不是C++的知识吗?怎么C语言题库中会出现
发表于 2020-10-15 19:25:42 回复(0)
AC,构造函数没有返回类型,这个是对。构造函数可以是私有的,当构造函数是私有函数的时候,就不能实例化一个对象了。构造函数如果我们不去显式的去定义,系统是会提供一个默认的构造函数。构造函数可以重载,参数数目或者参数类型不同都是重载的构造函数。
发表于 2016-12-31 16:03:28 回复(0)
呃呃呃C++的构造函数不是能返回临时对象吗(
发表于 2019-10-18 18:35:01 回复(0)
mark 构造函数的访问修饰符可以是任意的,构建单例将构造函数私有化。
发表于 2023-10-28 14:52:43 回复(0)
构造方法的访问修饰符是可以为任意的。比如最常见的当我们构造单例时需要将构造函数私有化。
发表于 2021-05-13 14:59:49 回复(0)