C++备考(二)引用和指针

学习没有捷径,但考试有捷径

临近考试,虽然之前对一些概念搞清楚了,但时日一长,很多又模糊了。因此利用整理成章,将知识重拾。
考试的范围如下:

  1. 常量(const、符号、字符串常量、立即数)
  2. 引用和指针
  3. 类的封装和隐藏(静态成员、友元函数)
  4. 类的初始化(初始化方式和顺序)
  5. 类的继承(继承方式、构函列表、多继承)
  6. 类的多态性(函数重载、运算符重载、虚函数、虚函数表)
  7. 类的作用域概念

引用

int i =10;
int& j = i;

在程序中处理i 和j 等价,分配常量指针&j指向i的地址。

new和delete

int a = 3, *p;
if ((p = new int) == NULL)
  exit(1);
else
  *p = 3;

cout << "*p is" << *p << endl;
delete p;
cout << "p site " << p << endl;
p = NULL;
cout << "p site " << p << endl;

delete后,虽不可访问,但地址不为空,防止下次判定失效,delete后赋空。

  • 避免内存泄漏,防止产生别名。即不要将指针指向另外的地址。
  • 优越性:自动调用构造和析构函数,自动计算大小
int *a=new int[10];
delete [] a;

知识点

  1. 增量运算符++和–可以用于浮点数
  2. 浮点数不可使用 %、位操作符

函数

引用

int& change(int &a)
{
	return a;
}
int main(void)
{
	int m = 3;
	change(m)=8;
	return m;
}
  1. 参数使用引用,直接写原变量名称即可改变值
  2. 返回引用值可修改返回值对应的量

函数设置默认值

int price(int num,int price=30)
{
	return num*price;
}

内联函数

inline add(int a,int b)
{
	return a+b;
}
  1. 不可包括循环语句和开关语句(switch,case)
  2. 预先定义好,代码量少(以空间换时间)
  3. 不可递归
  • 代替#define ,防止未检查的隐患

习题

  1. 下列运算是否非法?

int m = 5;
float n = 5.5;

cout<<-- -m+n;

增量运算符–优先级高于单目运算符-,故先与m结合,格式变为

cout<<- --m+n;

而m为不可修改的左值,不可进行增量运算,故非法,但下列正确

cout<<--m+n;
  1. 函数返回值的类型就是返回值表达式的类型 (x)

int example()
{
	char a = 'a';
	return a;
}

隐式类型转换

发布了30 篇原创文章 · 获赞 2 · 访问量 788

猜你喜欢

转载自blog.csdn.net/cascara/article/details/103058132