C++中易记混知识点总结(长期更新)

C++中易记混知识点总结(长期更新)

1、const指针和引用

const int &a;//引用对象为const,但实际上只是a一厢情愿为const引用,应用对象可以为普通变量,但a仍不能改变其值(特别注意在函数形参中的使用)。

const int *a;//指向常量的指针,和上面常量引用一样是一厢情愿,注意从右向左看,a首先是一个指针,指向一个const int。

int *const a=&cc;//从右往左看,a首先是一个常对象,其次是一个指针,说明是一个常指针,常指针必须初始化,之后便不能改变。引用不是对象,不存在本身是const的引用。

不能将一个指向(引用)常量的指针(引用)赋值给一个普通指针(引用),这样有可能造成所指(引用)对象改变。

2、复杂度数组、函数声明

int *p[10];//从左往右看,首先由[10]看出p是一个数组,再看*可以知道数组中存储的是指向int的指针,可以理解为(int *) p[10],此语句定义的是一个数组。

int (*p)[10]=&cc;//先从括号内向外,p前面有*,在定义中一定是指针,所以p是指向数组的指针,数组内容为int类型,此条语句定义的就是一个指针p。

int &p[10];//没有这种写法

int (&p) [10];//数组本身是对象,所以允许定义数组的指针和引用,从内向外看,p前面有&,所以p为引用,是数组的引用。

int *p();//从右往左看,表示函数p返回值是(int*)。

int (*p)();//从内往外,p是一个指针,指向一个函数。

定义一个返回指针且指针指向一个数组的函数有两种方法:

一是使用类型别名

typedef int arrT[10];//arrT是一个类型别名,表示的类型是含有10个整数的数组,等同于using arrT=int[10]

arrT* func(int i);//此函数返回指针,指向一个arrT类型,也就是一个含10个整数的数组。

二是如下

int (*func(int i))[10];//从内向外,func返回一个指针,(*func(int i))解引用为一个数组名,所以此语句定义一个返回指针的函数,指针指向一个int 数组。

int *(&array) [10] =ptrs;//int *ptrs[10],从内向外看,array是一个引用,引用一个数组,数组内容为(int *)类型。此语句定义的是array,所以初始化给的是ptrs。

3、指向数组的指针

int *matrix[10];//定义了一个由十个int指针组成的数组。

int (*matrix) [10];//定义了一个指针,指向含有10个整数的数组。

int matrix[] [10];//同上一个,matrix[]==(*matrix)。

4、类模板和模板类

一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默认成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。模板类其实是类模板的实例化产物&#

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值