[面试题]构造函数

简介:
(1)
class Person{
    Person(int age){
    }
};
class Student:Person{
};
int main(){
    Student student;
}

A、Compile-time error at 5. 

B、Compile-time error at 1. 

C、The compiler attempts to create a default constructor for class B. 

D、The compiler attempts to create a default constructor for class A.

解析:A

报错:error: no matching function for call to 'Person::Person()“

原因是因为子类Student中没有定义构造方法,那么就会有一个默认的无参构造方法,我们知道,在创建子类对象的时候,会调用父类的构造方法无参构造方法,因为Person类定义了一个带参数的构造方法,所以无参构造方法被覆盖了,所以在第5行会报A类中没有无参构造方法。
只要给Person定义一个无参构造方法就行了。

class Person{
    Person(int age){
    };
    public:
        Person(){
        };
};

class Student:Person{
};

(2)构造函数的初始化列表

class Person{
    private:
        int b;
        const int c;
        int &d;
    public:
        Person(int a);
};

Person::Person(int a){
    b = a;
    c = a;
    d = a;
}
报错:

error: uninitialized member 'Person::c' with 'const' type 'const int'

error: uninitialized reference member 'Person::d'

error: assignment of read-only data-member 'Person::c'
解析:可以初始化const对象或引用类型对象,但不能对他们进行赋值。在开始执行构造函数的函数体之前,要完成初始化。初始化const对象或引用类型对象

唯一的一个机会是在构造函数初始化列表中。

正确方式:

Person::Person(int a):b(a),c(a),d(a){

}




目录
相关文章
【Java基础面试三十四】、接口中可以有构造函数吗?
这篇文章讨论了Java中接口不能包含构造函数的原因,主要解释了接口中的成员变量默认是public static final类型的常量,不需要通过构造函数初始化,且接口本身不能被实例化,因此构造函数在接口中没有意义。
|
JavaScript 前端开发
面试向:原型、原型链、构造函数、继承、实例对象
面试向:原型、原型链、构造函数、继承、实例对象
面试向:原型、原型链、构造函数、继承、实例对象
|
Java 数据库连接
Java 最常见的面试题:hibernate 实体类必须要有无参构造函数吗?为什么?
Java 最常见的面试题:hibernate 实体类必须要有无参构造函数吗?为什么?
Day07 - 为什么箭头函数不能当构造函数 | 面试365
Day07 - 为什么箭头函数不能当构造函数 | 面试365
308 0
|
JavaScript 前端开发
Day06 - 构造函数的返回值与new实例关系 | 面试365
Day06 - 构造函数的返回值与new实例关系 | 面试365
205 0
|
C++
C++面试之 类string的构造函数、拷贝构造函数和析构函数
编写类String 的构造函数,析构函数,拷贝构造函数和赋值函数 class String { public: String(const char *str=NULL);//构造函数 String(const String &other);//拷贝构造函数 ...
2151 0
|
程序员 编译器
《.NET程序员面试秘笈》----面试题7 构造函数有什么作用
【考点】各种形态构造函数的理解,派生类的构造函数,构造函数的重载。
1446 0
|
存储 C# 程序员
朋友面试被问到---静态构造函数
原文:朋友面试被问到---静态构造函数 事情是这样的 朋友是一个一年多经验的.Net开发人员 在面试新公司的时候,被面试官问到什么是"静态构造函数" 朋友回来告诉我, "构造函数还有静态的吗,看来这次面试要黄了" "对的,构造函数是有静态的啊,不过也难怪,很少人会用到,看来面试官是要看你的...
837 0
|
10月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?