首页 > 编程语言 >c++的初始化列表与const成员

c++的初始化列表与const成员

时间:2024-09-08 23:55:14浏览次数:9  
标签:初始化 const 成员 c++ 列表 num 构造函数

初始化列表与const成员

const成员

使用const修饰的类、结构、联合的成员变量,在类对象创建完成前一定要初始化。

不能在构造函数中初始化const成员,因为执行构造函数时,类对象已经创建完成,只有类对象创建完成才能调用成员函数,构造函数虽然特殊但也是成员函数。

在定义const成员时进行初始化,该语法只有在C11语法标准下才支持。

初始化列表

在构造函数小括号后面,主要用于给const成员初始化的一种特殊语法,也可以给普通成员初始化(可以解决参数名与成员变量名同名的问题)。

注意:如果有成员是类、结构、联合类型的,还可以在初始化列表中显式调用成员的构造函数,还可以调用父类的构造函数。

class 类名
{
    成员变量;
public:
    构造函数(参数列表):成员变量(初始值),成员变量(初始值),...
    {
        
    }
};
#include <iostream>
using namespace std;
​
class Test
{
    // 可以使用,但只有C11标准才支持
    // const int num = 1234;
    const int num;
public:
    Test(int num=0):num(num)
    {   
        cout << "我是带初始化列表的构造函数" << endl;
    }   
    void show(void)
    {   
        cout << "const num = " << num << endl;
    }   
};
int main(int argc,const char* argv[])
{
    Test t(123456789);
    t.show();
    return 0;
}

标签:初始化,const,成员,c++,列表,num,构造函数
From: https://blog.csdn.net/zzt_is_me/article/details/142035577

相关文章

  • c++的构造函数与析构函数
    构造函数与析构函数构造函数1、什么构造函数类、结构、联合中的特殊成员函数,与类名、结构名、联合名同的成员函数,没有返回值。class类名{public:  类名(参数列表) {     }};2、何时调用构造函数当创建类对象时(实例化对象)会自动调用构造函......
  • 深度学习中常见的权重参数初始化方法
    在深度学习中,权重参数的初始化对模型的训练过程和性能有着非常重要的影响。一个好的权重初始化方法能够帮助模型更快收敛、避免梯度爆炸或梯度消失等问题。以下是几种常见的权重初始化方法及其背后的原理。1.零初始化(ZeroInitialization):方法:将所有权重初始化为零。问题:对于......
  • [C++#33][异常] 错误码 | 抛出与捕获 | 异常安全 | 异常体系
    目录C语言与C++错误处理方式的对比及应用一、C语言传统的错误处理方式1.终止程序:assert2.返回错误码缺点:二、C++中的异常处理机制1.基本概念2.异常的抛出与捕获3.异常的重新抛出三、C++中的异常安全1.构造函数与析构函数的异常2.RAII(资源获取即初始化)3.使......
  • C++17: 用折叠表达式实现一个IsAllTrue函数
    前言让我们实现一个IsAllTrue函数,支持变长参数,可传入多个表达式,必须全部计算为true,该函数才返回true。本文记录了逐步实现与优化该函数的思维链,用到了以下现代C++新特性知识,适合对C++进阶知识有一定了解的人。这样一种从实际问题来学习和运用知识的过程还是挺有趣的,特此整理分......
  • C++笔记19•数据结构:红黑树(RBTree)•
    红黑树1.简介:    红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。当搜索二叉树退化为单支树时,搜......
  • C++:类与对象
    一、面向对象编程(一)面向过程vs面向对象   面向过程(Procedural-Oriented-Programming, POP)和面向对象(Object-Oriented-Programming,OOP),是两种典型的编程范式,通常是作为划分编程语言的一大依据,在许多现代编程语言中都会有面向对象的编程范式,这是因为其与现实世界的良好......
  • C++宏
    宏是编译时预处理阶段用到的一种强大的工具,宏可以实现对指定代码片段的替换。依照笔者的理解,宏实际上是给某个特定的代码段起了一个别名。在预处理阶段,编译器将代码中的这个别名替换成相应的代码段。在C++当中,我们可以使用#define指令来定义宏。#definePI3.14159265358979......
  • C++变JAVE
    一、故事就是我今天闲的没事干,然后就突然想到了JAVE程序(就是我想到了用JAVE做菜单程序)然后就照着网上的教程然后就下载好了这个JDK-21#¥……&*&*O*&%……&K什么什么的东西,然后又让我在环境变量里修改一通后,他让我用下载地址打开cmd然后让我输入jave-version(不小心多打......
  • C++小游戏集合3个(不定时更新)1
    前言在Dvec++中想做游戏是很难的,但我不这么想,在下写了一些小游戏给客官看看一,2048#include<iostream>#include<vector>#include<ctime>#include<cstdlib>usingnamespacestd;classGame_2048{public:Game_2048();~Game_2048();voidintroduction()......
  • C++万字解析类和对象
     1.类的定义class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面......