C/C++编程笔记:C++基础之变量的声明与初始化赋值

变量的声明
所有变量必须在使用前进行声明,变量可以在使用前进行声明,不必在函数或过程的开始位置先声明。
变量名规范

  1. 名称只能使用字母、数字、下划线。
  2. 名称的第一个字符不能是数字。
  3. 不能与C++关键字重名。

注:以下划线开头的变量名是系统专用的,尽量不要这样命名。长度不要过长,最长尽量不要超过63。

变量的声明
所有变量必须在使用前进行声明,变量可以在使用前进行声明,不必在函数或过程的开始位置先声明。
变量名规范

  1. 名称只能使用字母、数字、下划线。
  2. 名称的第一个字符不能是数字。
  3. 不能与C++关键字重名。

注:以下划线开头的变量名是系统专用的,尽量不要这样命名。长度不要过长,最长尽量不要超过63。

变量声明举例
变量的初始化

  1. 默认初始化
    默认初始化是指定义变量时没有指定初值时进行的初始化操作。
    内置类型变量
    若变量定义在语句块(即{})外面,那么变量会被默认初始化为0或等同于0的值。
    若变量定义在语句块里面,变量的值是不确定的。
    为什么不初始化变量呢?给自己挖坑吗?

类类型变量
无论定义于何处都会执行默认构造函数。如果默认构造函数中没有初始化变量,那么变量的值是不确定的。如果不 存在构造函数,编译器会根据需要创建空默认构造函数。
2. 值初始化
值初始化是指用了初始化器但没有提供初始值的情况。变量会被默认初始化为0或等同于0的值。
3. 直接初始化
直接初始化就是指使用了初始化器并且提供了初值的情况。
对于类来说,直接初始化会调用与实参最佳匹配的构造函数。
例如:int a(1);string str(“hello”);Test a(1,2,3);

  1. 拷贝初始化
    拷贝初始化就是用等号对变量进行赋值的方法,即将右值拷贝给左值。
    内置类型变量
    对于内置类型变量来说,直接初始化与拷贝初始化差别几乎可以忽略不计。
    类类型变量
    对于类类型变量来说,直接初始化会调用与实参最佳匹配的构造函数,但是拷贝初始化调用类的拷贝构造函数。

*注:对类类型变量进行初始化时,如果类的构造函数采用了explicit修饰并且需要隐式类型转换。此时只能通过直接初始化而不能通过拷贝初始化。

变量的声明
所有变量必须在使用前进行声明,变量可以在使用前进行声明,不必在函数或过程的开始位置先声明。
变量名规范

  1. 名称只能使用字母、数字、下划线。
  2. 名称的第一个字符不能是数字。
  3. 不能与C++关键字重名。
    注:以下划线开头的变量名是系统专用的,尽量不要这样命名。长度不要过长,最长尽量不要超过63。

变量声明举例
变量的初始化

  1. 默认初始化
    默认初始化是指定义变量时没有指定初值时进行的初始化操作。
    内置类型变量
    若变量定义在语句块(即{})外面,那么变量会被默认初始化为0或等同于0的值。
    若变量定义在语句块里面,变量的值是不确定的。
    为什么不初始化变量呢?给自己挖坑吗?

类类型变量
无论定义于何处都会执行默认构造函数。如果默认构造函数中没有初始化变量,那么变量的值是不确定的。如果不 存在构造函数,编译器会根据需要创建空默认构造函数。
2. 值初始化
值初始化是指用了初始化器但没有提供初始值的情况。变量会被默认初始化为0或等同于0的值。
3. 直接初始化
直接初始化就是指使用了初始化器并且提供了初值的情况。
对于类来说,直接初始化会调用与实参最佳匹配的构造函数。
例如:int a(1);string str(“hello”);Test a(1,2,3);
4. 拷贝初始化
拷贝初始化就是用等号对变量进行赋值的方法,即将右值拷贝给左值。
内置类型变量
对于内置类型变量来说,直接初始化与拷贝初始化差别几乎可以忽略不计。

类类型变量
对于类类型变量来说,直接初始化会调用与实参最佳匹配的构造函数,但是拷贝初始化调用类的拷贝构造函数。
*注:对类类型变量进行初始化时,如果类的构造函数采用了explicit修饰并且需要隐式类型转换。此时只能通过直接初始化而不能通过拷贝初始化。
例如:
5. 列表初始化
在可以使用直接初始化和拷贝初始化的地方都能用列表初始化。列表初始化对容器的初始化同其他方法更方便一些。

对于容器
特别地,对于容器初始化时有()和{}两种方法。
使用()
有一个参数时仅构造容器。两个参数时,第一个参数构造容器,第二个初始化容器。
使用{}
如果参数序列的所有值均与容器类型相同,那么初始化时会将参数列表中的所有值放入容器中,容器的元素数 量和参数数量相同。
如果参数序列中的值与容器类型不同,那么会考虑将该值作为构造容器的参数;如果不能作为参数那么就会出 现编译错误。
6. 动态分配时的初始化
动态分配时不加以初始化时,内置数据类型的变量的值是不确定的。类类型变量将调用默认构造函数进行初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值