亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C++构造函数初始化列表:原理、语法与必须使用的场景

实例化对象时,构造函数常初始化成员变量。构造函数初始化列表提供直接、高效的成员初始化方式,在构造函数体执行前完成。除性能优势外,对const变量、引用成员、基类成员更是强制要求。

什么是构造函数初始化列表?

初始化列表直接初始化成员变量,避免默认构造后再赋值的开销。

语法

ClassName(type1 param1, type2 param2) : member1(param1), member2(param2) {
    // 构造函数体
}

member1、member2在构造函数体运行前用param1、param2初始化。

初始化列表示例

#include <iostream>
#include <string>
class Student {
public:
    Student(const std::string& name, int age) : name(name), age(age) {}
    void display() const {
        std::cout << "Name: " << name << ", Age: " << age << "\n";
    }
private:
    std::string name;
    int age;
};
int main() {
    Student s("Navya", 20);
    s.display();
    return 0;
}

输出

Name: Navya, Age: 20

为什么使用初始化列表?

特殊场景

const或引用成员

const变量和引用成员不可重新赋值,必须在初始化列表初始化:

class Config {
public:
    Config(const std::string& product, const int& model) : product(product), model(model) {}
private:
    const std::string product;
    const int& model;
};

基类初始化

派生类继承基类时,用初始化列表调用基类构造函数:

class Base {
public:
    Base(int value) : baseValue(value) {}
protected:
    int baseValue;
};
class Derived : public Base {
public:
    Derived(int value, int extra) : Base(value), extraValue(extra) {}
private:
    int extraValue;
};

C语言

  1. C 程序结构详解:Hello World 实例与编译运行全流程
  2. C 语言存储类详解:作用域、生命周期与四大类型实战
  3. C 语言错误处理最佳实践:errno、perror 与 strerror 详解
  4. 精通C#变量与基础数据类型:完整指南
  5. C++ 运算符重载实战指南:语法、方法、限制与代码示例
  6. C++ 结构体详解:定义、初始化、指针、函数参数与局限性
  7. C++ std::stack 完全指南:核心操作、实战示例与 STL 应用
  8. C# 反射完全指南:运行时类型发现、动态编程与特性读取
  9. C 语言开发环境搭建:编辑器与编译器完全指南
  10. 掌握 C# 预处理器指令:条件编译、诊断控制与代码组织实战
  11. C 语言类型转换完全指南:强制转换与隐式转换
  12. 2021 年 Windows/macOS/Linux 上 15 款最佳 C++ IDE(免费与付费)