• 6、C++中的赋值与初始化


    • 初始化:

    当对象在创建时获得了一个特定的值,我们说这个对象被初始化(initialized)了。用于初始化对象的值可以是任意复杂的表达式。当一次定义了两个或多个对象时,对象的名字随着定义也就马上可以被使用了。因此,在同一条定义语句中,可以用先定义的变量值去初始化后定义的其他变量;

    //正确:price先被初始化,随后别用于初始化discount
    double price=100.33,discount=price*0.23;
    //正确:调用函数applyDiscount,然后用函数的返回值初始化salePrice
    double salePrice=applyDiscount(price,discount);

    在C++中,初始化是一个异常复杂的 问题,很多人对于用=来初始化对象的方式倍感困惑,这种方式容易让人认为初始化是赋值的一种。事实上在C++中,初始化和赋值室外安全不同的两种操作。然而在很多编程语言中 二者的区别几乎可以忽略不计,即使在C++中有事这种区别也无关紧要,所以容易把二者混为一谈。

    其实初始化并不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,以一个新值来代替。

    • 列表初始化:

    C++中定义的几种初始化的形式

    int units_sold=0;
    int units_sold={0};
    int units_sold{0};
    int units_sold(0);

    其中,用花括号来初始化变量的形式被称为列表初始化(list initialization)。

    当用于内置类型的变量时,列表初始化的初始值存在丢失信息的风险,编译器将会报错;

    未初始化的额变量 含有一个不确定的值,使用未初始化的变量的值时一种错误的编程行为并且很难调试。建议初始化每一个内置类型的变量。虽然并非必须这么做,但如果我们不能确保初始化后程序安全,那这么做不失为一种简单可靠的方法。

    一个初识C++的小白
  • 相关阅读:
    golang学习笔记---flag包
    golang学习笔记 --- 结构体(struct)
    golang学习笔记---映射(map)
    golang学习笔记----slice(22)
    golang学习笔记---数组(22)
    golang学习笔记 ---数据类型转换(strconv包)
    golang学习笔记 ---slice(2)
    golang学习笔记 ---slice
    golang学习笔记--中英文字符串截取
    golang学习笔记 ---如何将interface转为int, string, slice, struct等类型
  • 原文地址:https://www.cnblogs.com/Real-m/p/13213880.html
Copyright © 2020-2023  润新知