Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C++学习笔记 #13

Open
leon0625 opened this issue Feb 24, 2020 · 0 comments
Open

C++学习笔记 #13

leon0625 opened this issue Feb 24, 2020 · 0 comments

Comments

@leon0625
Copy link
Owner

leon0625 commented Feb 24, 2020

初识C++

  • std::cout istream类型的对象,标准输入
  • std::cin osteam类型的对象,标准输出
  • cerr, clog
  • 输入运算符 >> ,输入运算符<<
  • std::endl, 结束当前行,冲刷缓冲区

变量和基本类型

  • C++11的变量初始化,使用花括号初始化
    int a{0}; 等价于int a = 0; 这种形式称为列表初始化

引用

  • 引用定义时必须初始化
  • 引用一旦初始化将不能绑定到其他对象上,不像指针还可以指向其他人
  • 引用不是对象,引用相当于是一个对象别名
  • 引用不能被初始化为另一个引用,因为引用自身不是对象
  • 书上说不能定义一个指针指向引用,但我试了下,可以编译过,正确执行
    int a;&b=a;*c=&b; //测试合法
  • 引用类型必须与其引用的对象类型一致
    const int a = 1;
    cost int &b = a; //正确,引用及其对象都是常量类型
    int &c = a; //错误,引用c不是常年类型
    const int &d = 1; //正确,1也是一个常量类型
    int &e = a * 2; //错误,a*2是一个常量类型
    但是: 引用常量可以绑定到一个不是常量的对象上,如
    int e = 1;
    const int &f = e; //正确,这时就不能通过f修改e的值

猜测
为何C++有引用,C里面的指针提高了效率,但是指针bug也是折磨人,所以引用就是一个不可修改的指针,如 void *const p = &a; p 这个指针定义为常量,无法修改。但是传递时又免去了拷贝的浪费。

const

  • const对象必须在定义时初始化,因为其不可改变,但可以用表达式初始化const常量,即运行时初始化
  • 如果想在多个文件之间共享const对象,必须在变量定义和申明的时候都添加exterm关键字
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant