c++列表初始化

来源:互联网 发布:软件工程硕士双证 编辑:程序博客网 时间:2024/06/06 18:08

c++11中引入了列表初始化的功能,提高了编写程序的安全性和简便性。

/*    编者:heavenmint@foxmail.com    功能:c++ 列表初始化用法演示    环境:Win10 Professional 1703 / Microsoft Visual Studio 2017 / Microsoft Visual C++ 2017    备注:无*/#include "stdafx.h"#include <iostream>struct MyStruct{    int i;    int j;    int k;    MyStruct(const std::initializer_list<int> &list) {        auto it = list.begin();        i = *it++;        j = *it++;        k = *it++;    }};class MyClass{public:    int a;    int b;    MyClass(int m, int n, double p) : a(m), b(n), c(p) {}    ~MyClass() {}    double c;};int main(){    /* 初始化变量 */    int value1{ 100 };    int value2 = { 100 };    /* 常规的类型转换,会导致精度丢失,但是编译器不会报错,但是这样写不安全 */    int b = 3.1415926;    /* 编译器会报错,在进行窄化操作的时候会提示错误,提高了程序的安全性 */    //int a{ 3.1415926 };    /* 初始化类 */    MyClass myClass1 = { 1, 3, 5.0 };    MyClass myClass2 { 1, 3, 5.0 };    /* 初始化结构体 */    MyStruct myStruct1 = { 4, 3, 1 };    MyStruct myStruct2 { 4, 3, 1 };    /* 初始化数组 */    int arr1[4]{ 1, 3, 4, 5 };    int arr2[4] = { 1, 3, 4, 5 };    return 0;}