c++primer 学习笔记

来源:互联网 发布:时光倒流软件 编辑:程序博客网 时间:2024/04/28 16:17

1、查看程序的返回值

echo $? 

echo %ERRORLEVEL%

2、编译

g++ -o prog1 -std=c++0x  -Wall prog1.cc

cl /EHsc  /W4 prog1.cpp

3、内置 数据类型

bool

char 

wchar_t

char16_t char32_t  用于Unicode

short <= int <=long

long long 新规范引入

float 

double

long double

4、类型转换

unsigned char c = -1     c = -1 %256

signed char c = 256      c 是未定义的

下面是一个死循环

for (unsigned u = 10; u>=0; --u)

  std::cout << u << std::endl;;

5、变量初始化

int units_sold = 0;

int units_sold(0);

int units_sold = {0};

int units_sold{0}  新规范引入


int a{3.14} , b = {3.14} // error 不允许窄化

int a(3.14),  b = 3.14  // ok


6、 默认值

不显示初始化时,全局内部变量、局部静态变量有默认值,局部变量未定义

类变量总是会调用相应的构造函数,否则编译不过去


7、引用

引用相当于指向一个变量的别名,不是一个具体的对象,没有地址,必须和所指向的类型一致,除了以下两种情况

 a  )const 引用可以指向任何可以转化为引用类型的变量、常量值,表达式   

 b )一个基类型的引用可以指向它的派生类


8、指针

和引用不一样的是,指针是一个实体,有地址,可以进行一个赋值等运算,它也必须和指向的类型一致,除了以下两种

 a ) 常量指针可以指向非常量类型

 b )  基类指针可以指向派生类对象


  空指针

  int *ptr = nullptr  新规范引入

  int *ptr = 0;

  int *0tr = NULL <cstdlib>

 

 int *p;

  int *&rp = p;  从变量开始,从右向左读,首先它是一个引用,然后是一个指针,   它是一个指向int形指针的引用 


9、常量

一般常量必须在定义时初始化,具有文件做用域,如果要在每个文件中都保用一个常量,可以在每个文件中定义,不会冲突,但这就会有多年常量

如果要常量只有一个实例,则需要用extern改变常量的作用域,在一个头文件中声明, 在一个cc文件中定义,PS:定义和声明都必须使用extern

top-level const  限定变量自身

low-level const 限定变量指向的内容

 a )常量表达式

        1、 字面值是一个常量表达式;2、一个用常量表达式初始化的常量是一个常量表达式

         constexpr 新规范引入,说明一个变量是一个常量表达式,编译器保证此变量必须用常量表达式初始化

         constexpr  int  mf = 20;

         constexpr  int limit  = mf;

         constexpr  int   sz  =  size();     // size必须是一个常量表达式函数(用constexpr限定)


PS:

initialization and assignment are different operations in C++




原创粉丝点击