c++11之初始化列表

本文探讨了C++11中的初始化列表,包括使用initializer_list构造函数进行系统内置类型和其他类型的初始化,以及正常构造函数列表、拷贝构造函数的应用。内容涵盖了不同构造方式和赋值操作。
摘要由CSDN通过智能技术生成
一、前言
     C++的学习中,我想每个人都被变量定义和申明折磨过,比如我在大学笔试过的几家公司,都考察了const和变量,类型的不同排列组合,让你区别有啥不同。反正在学习C++过程中已经被折磨惯了,今天再来看看重温下那段“辉煌的历史”。先来看一段代码:
    Player pa;                              // (a)
    Player pb();                            // (b)
    Player pc = Player();                   // (c)  
    Player pd(Player());                    // (d)    
    pd = Player()                           // (e)


a,c,d 都是申明一个变量,a 很容易理解就是申明一个变量,b第一感觉是调用构造函数来申明变量,其实不是,而是申明一个无参数,返回Player的函数。对于c以为是调用了operator= 赋值运算吧?完全不是,而是先生成一个对象,然后调用Player的拷贝构造函数,生成对象pc。d和c是一样的。e才是真正调用赋值操作。是不是已经被这各式各样的对象申明搞的晕头专向了。现在C++11初始化列表正式登场。
二、简介
     在看C++11初始化前,先来回忆一下C语言中的结构体初始化,代码如下:
#include <iostream>

struct Player{
    int id;
    const char* name;
};

int main() {
    Player player = {10001, "c++"};
    printf("%d, %s\n", player.id, player.name);
}
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值