C++初始化列表相关运用及整理知识点:

发布时间:2024年01月21日

初始化:对象创建时被赋值

四种初始化 形式:

eg: 类名 变量名 赋值
    Num b(1);
    Num c=1;
    Num a{1};
    使用{}的初始化称为列表初始化
    能防止窄化(收缩)转换
    Num d={1};

初始化列表

空初始化列表 将指定值 初始化:

int a{};
//a被赋值为0

double b{};
//b被赋值为0.0

char* p{};
//p被赋值为nullptr

vector<int>c{};
//c被赋值为一个空向量

string s{};
//s被赋值为""

char buf[10]{};
//buf中的所有元素为0

int *p=new int{}
//*p的值为0

char *q{new char[1024]{}};
//q中的所有元素为0

auto:

auto的引入:

为防止初始化数值与被初始化成员的类型不匹配,导致的数据由宽变窄或者出现数据丢失的情况(窄化转换),引出"auto"可自动根据输入成员的内容识别出最适合的成员类型

#include <iostream>
#include <string>
using namespace std; 

int main()
{
	auto a = 10;
	auto b = 'y';
	auto c =  { 1,2,3 };
	auto d = 12123.999;
	auto e = { "230","1ej","29ei","9rfvh","298" };

	cout << typeid(a).name() << endl << typeid(b).name() 
		 << endl << typeid(c).name() << endl << typeid(d).name() 
		 << endl<< typeid(e).name()<< endl;//输出变量类型
	
  for (auto& x :e)//输出e的所有数据
		cout << x << " ";
	cout << endl;
	return 0;
}

运行输出auto自动识别的变量类型可知:

当遇到复杂情况,如变量e时,auto作用清晰显现;

17行代码输出变量e的全体成员内容

运行代码如下:

注意:

  • 使用auto作为类型推断时,应该选择? ??auto 变量名={初始化列表}形式
  • auto z1{99};? ? //不推荐!!!? ? ? ? ? ? auto z2=99;? ?//这种方式更好? ? ?
  • ? ? ? ? ? ? ? ? ? ? ? ? 只有这一种情况不推荐直接使用{}

文章来源:https://blog.csdn.net/weixin_62946182/article/details/135636152
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。