首页 > 编程语言 >c++初始化列表和构造函数初始化的区别

c++初始化列表和构造函数初始化的区别

时间:2024-07-13 21:30:25浏览次数:11  
标签:初始化 变量 int c++ 列表 构造函数 赋值

在C++中,初始化列表和构造函数初始化是两种不同的方法用于初始化类的成员变量。

  1. 初始化列表(Initialization List):
  • 初始化列表是在构造函数的参数列表后面使用冒号(:),然后跟随着每个成员变量的初始化方式。
  • 通过初始化列表,可以在对象构造时直接为成员变量赋值,而不是在构造函数体内分别赋值。
  • 初始化列表的优点是可以提高代码的执行效率,避免了先进行默认初始化再赋值的额外开销

示例:

class MyClass {
private:
    int x;
    int y;
public:
    MyClass(int a, int b) : x(a), y(b) {}
};

 

  1. 构造函数初始化:
  • 构造函数初始化是在构造函数的函数体内直接为成员变量赋值。
  • 在构造函数体内对成员变量进行赋值的方式有多种,例如使用赋值语句、条件语句等,但相对于初始化列表来说会更繁琐。
  • 构造函数初始化是一种更灵活的初始化方式,可以在构造函数体内进行更复杂的操作。

示例:

class MyClass {
private:
    int x;
    int y;
public:
    MyClass(int a, int b) {
        x = a;
        y = b;
    }
};

 

总的来说,初始化列表是一种更推荐的初始化成员变量的方式,可以提高代码运行效率并且更清晰地表明成员变量的初始化顺序。而构造函数初始化则更加灵活,适用于需要在构造函数体内进行复杂操作的场景。

标签:初始化,变量,int,c++,列表,构造函数,赋值
From: https://www.cnblogs.com/tingtaishou/p/18300749

相关文章

  • C++客户端Qt开发——开发环境
    一、QT开发环境1.安装三个部分①C++编译器(gcc,cl.exe……)②QTSDKSDK-->软件开发工具包比如,windows版本QTSDK里已经内置了C++的编译器(内置编译器是mingw,windows版本的gcc/g++)③QT的集成开发环境(IDE)官方提供的QTCreator最容易入门,最容易上手的方式,开箱即用,虽然QTCrea......
  • C++ 入门基础:开启编程之旅
    引言C++是一种高效、灵活且功能强大的编程语言,广泛应用于系统软件、游戏开发、嵌入式系统、科学计算等多个领域。作为C语言的扩展,C++不仅继承了C语言的过程化编程特性,还增加了面向对象编程(OOP)的支持,使得代码更加模块化、易于管理和复用。本文将带你走进C++的世界,从......
  • c++继承特点,菱形继承,访问方式,默认成员函数
    目录继承概念继承特性继承后成员访问的方式的变化子父类成员重命名派生类的默认成员函数​编辑菱形继承小tip继承概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,......
  • 05day--C++日期类的实现与取地址运算符的重载
    这里写目录标题5.3⽇期类实现6.取地址运算符重载6.1const成员函数6.2取地址运算符重载5.3⽇期类实现Date.h#pragmaonce#include<iostream>usingnamespacestd;#include<assert.h>classDate{//友元函数声明friendostream&operator<<(ostream&......
  • C++11标准库<chrono>、<future>、 <atomic>、<condition_variable>、<mutex>、<t
    目录<chrono>时间间隔duration常用的duration时间点time_point时钟system_clock&steady_clocksystem_clock代码举例steady_clock(秒表)例程:转换函数1.duration_castDescription:duration支持隐式转换的规则2.time_point_cast<thread>this_thread命名空间1.get_id()2.sleep_f......
  • C++类和对象 前篇
    C++类和对象基础部分​众所周知,C语言是一门面向过程的语言,面向过程简单来说就是直接使用各种函数和数据来解决一件事。而面向对象是谁来使用函数和数据去解决一件事。​C++是一门既可以面向对象也可以面向过程的语言,它能够兼容C语言,并且对C语言进行了许多优化升级,其中......
  • C++知识备忘及面试指导
    一、C++基础1.C和C++有什么区别?C语言C语言是纯面向过程的语言,不支持面向对象,函数名字不会被改编(函数不能重载)C语言的结构体只支持成员变量,不支持成员函数,成员没有访问控制(即没有publicprotectedprivate)C++C++是C语言的超集,同时支持面向过程和面向对象(类)函数名字编译......
  • C++利用类和对象封装立方体面积和体积
    C++利用类和对象封装立方体面积和体积1、说明2、代码3、总结1、说明C++利用类和对象进行封装立方体的面积和体积,对学过的知识进行总结,本代码并非原创。2、代码#include<iostream>#include<time.h>#include<string.h>#include<ctime>usingnamespacestd;//立......
  • C++ 小苹果
    题目描述小Y的桌子上放着 n 个苹果从左到右排成一列,编号为从 1 到 n。小苞是小Y的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第 1 个苹果开始、每隔 2 个苹果拿走 1 个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。小苞想......
  • c++ 勾股数
    题目描述输入整数R,输出小于等于R的满足X²+Y²=Z²的所有正整数X,Y,Z输入格式输入一个实数:R(1<=R<=100)输出格式输出一个整数表示共有多少组满足条件的勾股数样例输入10样例输出2代码如下#include<bits/stdc++.h>//万能头文件usingnamespacestd;i......