构造函数

构造函数用于初始化一个对象。一个类中可以有多个构造函数,当你使用 new 关键字创建一个类的实例时,系统会根据你传递的参数来选择合适的构造函数。如果没有找到匹配的构造函数,那么系统会报错。下面是一个例子。 第一个构造函数是一个无参构造函数,它将 xy 变量的值都初始化为 0。第二个构造函数接受两个整数参数,用于初始化 xy 变量的值。

public class MyClass {
    private int x;
    private int y;

    public MyClass() {
        x = 0;
        y = 0;
    }

    public MyClass(int x, int y) {
        this.x = x;
        this.y = y;
    }
}


MyClass myObject1 = new MyClass();
MyClass myObject2 = new MyClass(10, 20);

初始化列表

构造函数的初始化列表是一种特殊的语法,用于在构造函数中初始化类的成员变量和基类。它位于构造函数签名和函数体之间,以冒号 : 开始。初始化列表中的每一项都用逗号 , 分隔。 每一项都包含一个成员变量或基类的名称,后跟一对圆括号,括号内是用于初始化该成员变量或基类的表达式。例如,在这段代码中:

AudioStreamOutSink::AudioStreamOutSink(sp<StreamOutHalInterface> stream) :
        NBAIO_Sink(),
        mStream(stream),
        mStreamBufferSizeBytes(0)
{
    ALOG_ASSERT(stream != 0);
}

构造函数的初始化列表包含三项:NBAIO_Sink()mStream(stream)mStreamBufferSizeBytes(0)

  • NBAIO_Sink() 这一项表示调用基类 NBAIO_Sink 的默认构造函数来初始化基类部分。
  • mStream(stream) 这一项表示使用传入的 stream 参数来初始化成员变量 mStream
  • mStreamBufferSizeBytes(0) 这一项表示使用常量 0 来初始化成员变量 mStreamBufferSizeBytes
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: c++