【3】c++11新特性(稳定性和兼容性)—>类成员的快速初始化

news2024/11/19 10:20:43

在进行类成员变量初始化的时候,C++11标准对于C++98做了补充,允许在定义类的时候在类的内部直接对非静态变量进行初始化,在初始化的时候可以使用等号=,也可以使用花括号{},等号可以省略不写;静态成员变量需要在类的外部初始化。

#include <iostream>
using namespace std;

class Base
{
private:
    //非静态成员变量
    int a = 9;
    int b = { 5 };
    int c{ 12 };
    double array[4] = { 3.14, 3.15, 3.16, 3.17 };
    double array_1[4]{ 3.14, 3.15, 3.16, 3.17 };
    string s1{ "hello world" };
    //静态成员变量
    static int d;
    static const double e;
    static const char* const f; //类的静态成员,但不是整形或者枚举
    //变量是静态常量,并且类型是整形或者枚举类型可以在类内初始化
    const static int g = 0;


};
int Base::d = 100;
const double Base::e = 3.14;
const char* const Base::f = "lll eee";

在类内部赋值和初始化列表

我们对静态成员变量除了可以在构造函数内部进行赋值,也可以在类的初始化列表中进行初始化(这种方式比在构造函数内部赋值效率高)。那么如果同事在类的内部对非静态成员变量就地初始化和在初始化列表中进行初始化会怎样呢?

#include<iostream>

class Init
{
public:
    //初始化列表
    Init(int x, int y, int z) :a(x), b(y), c(z) {}

    //函数内部初始化
    int a = 1;
    int b = 2;
    int c = 3;
};

int main()
{
    Init tmp(10, 20, 30);
    std::cout << "a: " << tmp.a << ", b: " << tmp.b << ", c: " << tmp.c << std::endl;
    return 0;
}

在这里插入图片描述
这里看出来两者并没有冲突,程序可以正常运行,程序先在类内部对变量初始化,又在初始化列表中进行初始化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1099252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树的三种遍历方式的本质

二叉树的定义就不在这里多说了&#xff0c;下面这个图就是一个简单的二叉树&#xff1a; 二叉树的三种遍历方式&#xff1a; 前序遍历&#xff1a;头左右&#xff0c;也就是先头后左再右&#xff1a;1245367 public static void prePrint(BinaryTreeNode root) {if (root ! n…

pycharm社区版创建Django项目的一种方式

pycharm社区版创建Django项目 pycharm创建New project安装django&#xff0c;如果安装过可略过安装完成后查看安装情况生成Django项目需要的文件这里注意生成语句后面的 . 不可以省略 生成文件后&#xff0c;框架搭建完成&#xff0c;配置启动我这里在配置完后&#xff0c;报了…

徐建鸿:深耕中医康养的“托钵行者”

为什么是“庄人堂”&#xff1f;杭州“庄人堂”医药科技公司董事长徐建鸿很乐意和别人分享这个名称的由来&#xff0c;一方面是庄子首先提出“养生”这个概念&#xff0c;接近上工治未病的上医&#xff0c;取名“庄人堂”代表庄子门生&#xff0c;向古哲先贤致敬&#xff01;另…

vscode使用code runner乱码

"code-runner.executorMap": {"python": "set PYTHONIOENCODINGutf8 && python $fullFileName"}

unordered_set unordered_map 的封装

目录 1. 哈希的概念 1.1. 哈希冲突 1.2. 哈希函数&#xff1a; 1. 直接定址法 2. 除留余数法 1.3. 闭散列实现哈希 1.4. 开散列实现哈希 2. 哈希的应用 2.1 位图的概念 2.1.1. 问题&#xff1a; 2.2.1. set ​编辑 2.2.2. reset 2.2.3. test() 2.2. 位图的实现…

软件工程与计算总结(十五)详细设计中面向对象方法下的信息隐藏

软件工程与计算总结&#xff08;十三&#xff09;详细设计中的模块化与信息隐藏 之前的博客中&#xff0c;模块需要隐藏的决策主要由“职责的实现”and“实现的变更”两类&#xff0c;在面向对象方法中&#xff0c;需要做到的就是&#xff1a; 封装类的职责&#xff0c;隐藏职…

MyBatisPlus(十九)自动填充

说明 自动填充指的是&#xff0c;当数据被 插入 或者 更新 的时候&#xff0c;会为指定字段进行一些默认的数据填充。 比如&#xff0c;插入时&#xff0c;会自动填充数据的创建时间和更新时间&#xff1b;更新时&#xff0c;会自动填充数据的更新时间。 实现方式 配置处理器…

python--短路运算,把0、空字符串和None看成 False,其他数值和非空字符串都看成 True

代码 print(3 and 4 and 5) # 5 print(5 and 6 or 7) # 6 4 > 3 and print(‘hello world’) # 输出hello world 注释&#xff1a; 在逻辑运算中&#xff0c;不一定逻辑运算符的两边都是纯表达式。也可以是数值类型的数据。 Python把0、空字符串和None看成 False&#xff…

字节码进阶之Lombok底层原理

字节码进阶之Lombok底层原理 文章目录 前言lombok 原理Lombok工作原理 举个简单的例子 前言 例如&#xff0c;我们经常在Java代码中为类的属性生成getter和setter方法&#xff0c;这是一种重复且繁琐的工作。使用Lombok可以极大地简化这个过程。 假设我们有如下的Java类&…

微软AutoGen框架:让聊天解决问题成为一种“酷”体验!

今天要给大家介绍一款在人工智能领域引起巨大轰动的产品——微软AutoGen框架。这款框架的出现&#xff0c;让多个LLM智能体通过聊天来解决任务成为可能&#xff0c;令人激动不已&#xff01; 首先&#xff0c;我们先来了解一下LLM智能体。LLM代表"Language Learning Mode…

【MySQL】索引的增删查

上篇博客讲解了索引的底层结构 本篇介绍索引的使用 文章目录 一. 主键索引二. 唯一键索引三. 普通索引四. 全文索引五. 查询索引六. 删除索引结束语 一. 主键索引 MySQL默认会按照主键索引进行排序 关键字&#xff1a;primary key 即使建表时没有指明主键&#xff0c;MySQL也会…

25.0 MySQL 数据库概述

1. 数据库介绍 1.1 简介 数据库是用于存储, 管理和组织数据的一种技术.使用数据库有以下几个重要的原因: * 1. 数据的持久化存储: 数据库可以将数据持久地保存在磁盘上, 确保数据在计算机系统关闭或发生故障时不会丢失.这样可以保证数据的安全性和可靠性.* 2. 数据共享和协作…

excel+requests管理测试用例接口自动化框架

背景&#xff1a; 某项目有多个接口&#xff0c;之前使用的unittest框架来管理测试用例&#xff0c;将每个接口的用例封装成一个py文件&#xff0c;接口有数据或者字段变动后&#xff0c;需要去每个py文件中找出变动的接口测试用例&#xff0c;维护起来不方便&#xff0c;为了…

记IIS升级迁移之旅

场景 有一台Windows Server 2008机器&#xff0c;因为操作系统更新的原因&#xff0c;需要升级到 2022&#xff0c; 这台机器上原先部署了IIS 应用&#xff0c; 所以需要一并迁移。 旧机器&#xff1a; Windows Server 2008 &#xff0c; IIS7 &#xff0c;.NET 版本v4.0新机…

qt笔记之qml下拉标签组合框增加发送按钮发送标签内容

qt笔记之qml下拉标签组合框增加发送按钮发送标签内容 code review! 文章目录 qt笔记之qml下拉标签组合框增加发送按钮发送标签内容1.运行2.文件结构3.main.qml4.main.cc5.MyClass.h6.MyClass.cc7.CMakeLists.txt8.ComboBox.pro9.qml.qrc 1.运行 2.文件结构 3.main.qml 代码 …

Android自定义AppGlideModule,DataFetcher ,ModelLoaderFactory,ModelLoader,Kotlin(1)

Android自定义AppGlideModule,DataFetcher ,ModelLoaderFactory,ModelLoader,Kotlin(1) 假设实现一个简单的功能&#xff0c;对传入要加载的path路径增加一定的筛选、容错或“重定向”&#xff0c;需要自定义一个模型&#xff0c;基于这个模型&#xff0c;让Glide自动匹配模型…

logback服务器日志删除原理分析

查看以下的logback官方文档 Chapter 4: Appendershttps://logback.qos.ch/manual/appenders.html 按文档说明&#xff0c;maxHistory是设置保存归档日志的最大数量&#xff0c;该数量的单位受到fileNamePattern里的值%d控制&#xff0c;如果有多个%d,只能有一个主%d&#xff0…

ArcGIS笔记8_测量得到的距离单位不是米?一经度一纬度换算为多少米?

本文目录 前言Step 1 遇到测量结果以度为单位的情况Step 2 简单的笨办法转换为以米为单位Step 3 拓展&#xff1a;一经度一纬度换算为多少米 前言 有时我们会遇到这种情况&#xff0c;想在ArcGIS中使用测量工具测量一下某一段距离&#xff0c;但显示的测量结果却是某某度&…

Linux操作系统的基础知识

在操作系统中&#xff0c;进程的执行也需要分配 CPU 进行执行&#xff0c;也就是按照程序里面的二进制代码一行一行地执行。于是&#xff0c;为了管理进程&#xff0c;我们还需要一个进程管理子系统&#xff08;Process Management Subsystem&#xff09;。如果运行的进程很多&…

java基础练习,九九乘法表(java版),计算器

简介 对于有了解&#xff0c;但是了解不深的同学&#xff0c;学习Java总是感觉一看就会&#xff0c;一些就废。往往需要一些实操练习&#xff0c;来夯实我们的学习结果。九九乘法表和计算器都是在编程学习领域比较经典的案例。本文为大家讲解一下两个基础练习涉及到一些基础知…