网站首页 > 基础教程 正文
变量的声明
? 所有变量必须在使用前进行声明,变量可以在使用前进行声明,不必在函数或过程的开始位置先声明。
变量名规范
? 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. 列表初始化
?在可以使用直接初始化和拷贝初始化的地方都能用列表初始化。列表初始化对容器的初始化同其他方法更方便一些。
对于容器
?特别地,对于容器初始化时有()和{}两种方法。
?使用()
? 有一个参数时仅构造容器。两个参数时,第一个参数构造容器,第二个初始化容器。
?使用{}
? 如果参数序列的所有值均与容器类型相同,那么初始化时会将参数列表中的所有值放入容器中,容器的元素数 量和参数数量相同。
? 如果参数序列中的值与容器类型不同,那么会考虑将该值作为构造容器的参数;如果不能作为参数那么就会出 现编译错误。
? 例如:
Copy
6. 动态分配时的初始化
? 动态分配时不加以初始化时,内置数据类型的变量的值是不确定的。类类型变量将调用默认构造函数进行初始化。
? 例如:
?int* a = new int();
?int* a = new int(123);
?vector<int> *t1 = new vector<int> {1,2,3,4};
学习C/C++编程知识,想要成为一个更加优秀的程序员,或者你学习C/C++的时候有难度,可以关注+私信小编【C/C++编程】,不仅有学习视频和文件资料,还有更多志同道合的朋友,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!
猜你喜欢
- 2024-10-10 C++系列1-1:初探C++ c=2μf
- 2024-10-10 浅谈C++11(第9篇 可变参数模板) c++可变参数模板类
- 2024-10-10 数组的初始化方式有哪几种? 数组的初始化是什么意思
- 2024-10-10 c++对于内建类型的默认初始化 创建内部类的对象
- 2024-10-10 C++类构造函数,如何初始化对象?linux C++第27讲
- 2024-10-10 【C++编程语言】之 类和对象——对象的初始和消除
- 2024-10-10 C++基础语法梳理:引用、封装、继承和多态
- 2024-10-10 C++核心准则?:按照成员声明的顺序定义和初始化成员变量
- 2024-10-10 C++核心准则C.47:按照成员变量声明的次序定义和初始化数据成员
- 2024-10-10 C/C++语言编程系列002——不同情况下数组的初始化方法
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)