C++ primer学习笔记二

一. 表达式
  • 整形提升:char bool short 转换为int

  • 左值与右值
    一个对象被用作是右值的时候,用的是对象的值,当被用作左值的时候,用的是对象在内存中的位置。

  • 优先级和结合律
    左结合律:表达式从左往右运算。
    优先级高的先组合在一起,优先级相同的按照结合律运算,括号无视优先级和结合律。
    赋值运算满足右结合律

  • 求值顺序:最好用括号来强制组合求值顺序。

  • && and | | 运算符的短路求值策略:
    当且仅当左侧的运算无法确定表达式的结果才进行右侧的运算

  • 递增递减运算符的前置后置问题
    前置返回改变后的对象,后置返回的是改变值之前的那个对象的副本。
    养成习惯使用前置,减少性能开销。
    条件运算符?:

强制类型转换运算
const_cast 改变底层const
static_cast:只要不含有底层const都能够使用

二. 语句

throw语句抛出异常。
try catch语句 执行try,在try中检测异常,在catch中捕捉异常并执行相应的代码 。

三. 函数

管理指针三种常用的技术

1. 使用标记指定数组长度:C风格字符串’\0’结束
2. 使用标准库规范:首元素和尾后元素指针
3. 显式的传递一个表示数组大小的形参

C++11: iterator头文件中新增了begin end函数,可以获取数组的首元素和尾后元素指针。
在传递计数的参数的时候使用size_t替代int,增强可移植性。

C++11:initializer_list类型的参数,类似于vector 但存储的都是常量,可作为形参传递。
数组的引用和引用的数组

int &arr[10];//引用的数组
int (&arr)[10];//数组的引用
----------类似的------------
int *arr[10];//指针数组 长度为10 元素是int的指针
int (*arr)[10];//数组指针,指向int[10]的数组

从右往左看,第二个是长度为10的int数组,且是个引用.
第一个是长度为十的数组,每个数据类型是int&

main函数可以没有返回值,其他非void函数必须要有返回值。

C++11 尾置返回类型简化函数返回数组指针,使用decltype确定返回值类型。如果是个数组,需要加上*。

默认实参:在函数声明中添加默认实参,以后使用函数的时候,形参会被赋予相应的默认值。
tips:把不怎么使用的默认值的形参放在前面,经常使用的放在后面。

const与函数重载:只有底层const能够重载同名函数。有顶层const的形参没办法和一个没有顶层const的形参区分。
也就是说如果只是不能修改自己本身的值的参数重载,就不能够通过。
但是在类中 const成员函数和非const成员函数就属于重载

1.底层const能够重载的例子

void fun(int& a) {
	cout << "non-const" << endl;
}
void fun(const int& a)
{
	cout << "const" << endl;
}
int main() {
	int d = 10;
	const int a = 19;
	fun(d);
	fun(a);
}

2.顶层const不能重载的例子

void fun(int a) {
	cout << 1 << endl;
}
void fun(const int a)
{
	cout << 2 << endl;
}
int main() {
	const int d = 10;
	fun(d);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值