c++primer 学习笔记(一)

1.定义于函数体内的内置类型的对象如果没有初始化,则其值未定义。类的对象如果没有显示地初始化,则值由类自己确定
2.c++是一种静态类型语言,其含义是在编译阶段检查类型。检查类型的过程叫类型检查。对象的类型决定了对象能参与的运算。所以编译器必须知道每一个实体对象的类型,并要求我们在使用某个变量之前必须声明类型。
3.变量命令规范:

  • 1. 标识符要体现含义
    2. 标识符必须由字母或i者下划线开头,大小写敏感,关键字不能做标识符
    3. 变量名一般小写,如index ,不能使用Index INDEX
    4. 用户自定义的类名一般是以大写字母开头,如 Student
    5. 如果标识符由多个单词组成,则单词之间有明显区分,如 student_num / studentNum

    4.(一般意义上为左值引用)引用:reference 给对象起一个别名,定义引用时,程序把引用和它的初始值一直绑定在一起,而不是初始值赋值
    基本语法: 数据类型 &别名 = 原名
    一条语句中可以定义多个引用,且类型要相同

   int a =10;  int &b = a;  
   //a ,b 指向的同一块内存  b = 100;  
   cout << a<<  b<<endl;  //a=b=100;    
  引用必须初始化且初始值必须是一个对象,一旦初始化之后就不能更改    因为引用本身不是一个对象,所以不能定义引用的引用
 int a=10;int &b = a;
 int c= 90;b =c;  //赋值而不是引用cout << a << b<<c<<endl;  //a=b=c=90;   
 // 引用传递:(形参修饰实参不需要解引用)
 void swap(int &a,int &b){    
 	int temp = a;    
 	a = b;  
    b = temp;
 }
   int a=29;int b=90;
   swap(a,b);    
  引用做函数返回值:(不能返回局部变量的引用)    
  引用的本质:
在c++中内部实现是指针常量
int &b = a
编译器转换为 int* const b = &a;    
指针指向不能改,也说明引用不能更改b=20;   
*b = 20;  //解引用

5.指针(pointer):
和引用的不同点:
1.
指针本身就是一个对象,允许对指针进行赋值和拷贝,在其生命周期内可以先后指向多个对象
2.
指针无须在定义时初始化,和其他内置类型一样,在作用域内为初始化的话,也会拥有一个不确定的值
3.
指针存放某个对象的地址,引用只是某个对象的别名

void *指针:可用于存放任意对象的地址。但对该地址类存放什么类型的对象并不清楚
int a = 2,*b = &a;
void *p = &a;  //存放任意类型的对象
p = b;

6.如果想在多个文件中共享使用同一个const对象,必须在变量定义之前,头文件中添加extern关键字

7.constexpr:c++11允许使用constexpr关键字来声明一个常量表达式
如果使用了constexpr声明了一个指针,限定符只对指针有效,对指针指向的对象无关

const int *p = nullptr;  //指向整形常量的指针
constexpr int *q = nullptr; //q是指向整数的常量指针

8.auto关键字:自动推导变量对象类型。
使用引用其实是使用引用绑定的对象,auto声明时是以引用对象的类型进行推导
auto一般会忽略顶层const ,同时底层const会保留下来

const int ci = 0;
auto a = &ci;   //对常量对象取地址是一种底层const

9.decltyde类型标识符
c++11引入了该类型,它的作用是选择并返回操作数的数据类型,同时编译时只是分析表达式并得到它的类型,却不实际计算表达式的值

decltyde(f()) sum = x;
//函数f()的返回类型就是sum 的类型

decltyde 和引用:
decltyde((var)) (双层括号)的结果永远是引用,而decltyde(var) 的结果只有当var本身就是一个引用才是引用

10.class 和struct的区别:
class和struct 都是定义数据类型,区别在于默认的访问权限不同,class的默认访问权限是private,struct是public
并且class类的实例化对象可以继承,而struct不能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值