首页 > 编程语言 >C++中的默认初始化

C++中的默认初始化

时间:2023-02-12 10:01:26浏览次数:60  
标签:初始化 constructible const default 成员 默认 C++

当没有通过初始化器构造一个对象时,那么将会执行默认初始化。

语法

  1. T object;

  2. new T;

默认初始化出现在以下几种情况中

  1. 当一个自动,静态,或者线程存储周期的变量声明时没有初始化器

  2. 当通过new创建一个没有初始化器的动态存储周期的对象

  3. 当一个基类或者非静态成员没有在构造器初始化列表中被涉及到且这个构造器刚好被调用。

默认初始化的效果是如下几种

  1. 如果T是一个class类型,将会考虑该类的构造器,并且对空实参列表的构造器进行重载解析。

  2. 如果T是一个数组类型,那么每一个元素将会执行默认初始化。

  3. 否则,将不会执行初始化。

const对象的默认初始化

如果要默认初始化带const的类型为T的对象,那么T必须是const-default-constructible或者数组里的成员是const-default-constructible

如果默认初始化T时会调用一个用户提供的构造器(不是从基类继承而来 从C++11开始)或者

  1. 每一个直接的非变体非静态成员M拥有一个默认初始化器,或者M是class类型X且X是const-default-constructible,数组同理。

  2. 如果T拥有至少一个非静态成员的union,且刚好有一个变体成员(变体成员(variant member))拥有默认成员初始化器

  3. 如果T不是union,对于每一个至少拥有一个非静态数据成员的匿名union来说,刚好一个非静态数据成员拥有默认初始化器

并且每一个可能被构造的T的基类也是const-default-constructible。那么T就是const-default-constructible

参考

标签:初始化,constructible,const,default,成员,默认,C++
From: https://www.cnblogs.com/riasartemis/p/17112721.html

相关文章

  • C++中explicit的用法
    C++中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色。1是个构造;2是个默认且隐含的类型转换操作符。所以,有时候在我们......
  • C++匿名函数
    #include<iostream>std::stringaaa="111";intmain(){//[]称为lambda捕获列表,它的含义为:告诉编译器需要在匿名函数内部使用外部的变量。捕获列表中的内容......
  • 学习C++第五天
    今日主要学习指针和结构体,并对前几天的知识进行一个测试总结指针和结构体#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>//intmain()//{// inta=10;//a在内存......
  • c++ 可以检测线程是否销毁的thread_guard
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e6+1e2,Q=N;usingll=longlong;intn,q;lla[N];intsta[N];structq_t{ intl,r;}que[Q......
  • C++ 调用 Python 总结(一)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......
  • C++11 中运行代码块耗时的方法以及坑(chrono 方法)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......
  • 关于C++ 多态实现技术的深度解析(vfptr,vftable)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......
  • GCC&&G++ C && C++ 内嵌汇编和调用汇编函数的方法(x86,ARM自己对照改)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......
  • c语言之遗漏---标准C的标记化结构初始化语法
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文发布于2015-12-2919:22:14,现用MarkDo......
  • c++登录注册功能实现代码
    //ConsoleApplication26.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。////#define_CRT_SECURE_NO_WARNINGS#define_CRT_NONSTDC_NO_DEPRECATE#includ......