zhngs

zhngs

c++注解(2)——表达式和语句

一.初始化
1.初始化方法
2.零初始化
二.运算符
三.分支
四.循环

一.初始化

许多c++课程都不会讲初始化的内容,我觉得这是一个比较大的失误,能够准确把握c++的初始化,是至关重要的

1.初始化方法

c++的初始化方法无非下面三个,类和结构体推荐使用小括号初始化,基础类型和指针类型推荐使用赋值初始化,数组推荐使用花括号初始化,对于含有std::initializer_list构造方式的类,使用花括号初始化可能会造成疑惑,不推荐使用

  • 小括号初始化:(表达式列表),括号中的以逗号分隔的含有任意表达式和花括号初始化器列表的列表
  • 赋值初始化:= 表达式,等号后面跟着一个表达式
  • 花括号初始化:{初始化器列表},以逗号分隔且可以为空的含有表达式和其他花括号初始化器列表的列表
int a = 3; char* str = "hello world"; vector<int> vec(3); pair<int, int> two(1, 3); vector<int> v1(5); // {0, 0, 0, 0, 0} vector<int> v1{5}; // {5}

2.零初始化

零初始化是一个非常有用的特殊初始化,体现为以下形式:

  • static T t

  • T(),T t = {},T{}

  • char 数组[n] = "短序列",以不够长的字符串字面量初始化任何字符类型数组时,零初始化数组的剩余部分

char ch[3] = "a" // {'a', 0, 0} char ch2[3] = "" // {0, 0, 0} int arr[3] = {} // {0, 0, 0} class Test { public: Test() : a(), // 0 b(), // 0 c(), //这里c为{0, 0, 0} d() //这里调用的是string的默认初始化函数 { } private: int a; double b; int c[3]; string d; }

二.运算符

  • 算术运算符:+,-,*,/,%,++,--

  • 关系运算符:==,!=,>,<,>=,<=

  • 逻辑运算符:&&,||,!

  • 位运算符:&,|,^,~,<<,>>

  • 赋值运算符:=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=,

  • sizeof运算符

  • 三元运算符:?:

  • 成员运算符:.和->

  • 指针运算符:&,*

  • 强制转换运算符:const_caststatic_castdynamic_castreinterpet_cast

  • new,delete

  • thread_local,多线程程序常用,比较重要

三.分支

  • if,else if,else

  • switch

四.循环

  • for

  • while

  • do while