1 悬垂else来自于else语句搭配的if语句的二义性

2 理解switch代码:

switch(c)
{
case 'a':
a++;
case 'b':
b++;
default:
x++;
}

 如果为'a',则a++,b++,x++都会被执行

 如果为'b',则b++,x++都会被执行

 如果都不是,则只执行x++

 由此可以推测出switch语句中break的作用,以及没有break时,语句的执行情况:第一个满足的case一直执行到break或switch结束,之后所有的case都被忽略,退出之前所有的语句都会被执行

3 switch结构内定义的变量,只能在最后一个case标号或default标号后面定义,防止代码出现跳过变量的定义和初始化的情况

 因为定义过的变量可以被之后的代码使用,但是switch结构中,可能会跳过定义直接到达变量使用的代码处

 如果某个case需要定义变量,最好使用{},防止之后的case继续使用该变量

4 *p1++ = *p2++

 后自增操作符优先级高于*操作符,所以自增的是指针,不是指针指向的对象,但是解引用是从第一个元素开始,即对于p1和p2,其值已经实现自增,但是对于表达式*,还是p1和p2自增之前的值

 不能按照p1和p2自增,然后对其自增后的值解引用,因为p1++的返回值是自增前的p1,虽然p1本身是自增的

5 goto语句不能跨越变量的定义向前跳转

6 函数相关

 函数调用:用对应实参初始化函数形参,将控制权转交给被调用函数,主调函数被挂起,被调函数开始执行,被调函数的运行以形参的(隐式)定义和初始化开始,直到return结束,return的结果作为主调函数中调用操作符的结果

 非引用和指针形参:const和非const形参,都可以用const或非const实参来调用

 引用和指针形参:const形参可以用const或非const实参来调用,非const形参只能用非const实参来调用

 使用引用形参的另一个好处是:避免复制实参!!

 通过引用传递数组时,数组大小成为实参和形参的一部分:

void func(int (&a)[])
{
for(int i - ;i < ;++i)
cout << a[i] << endl;
}

 传递多维数组:matrix是指向指针的指针,这个指针指向10元素的数组的首元素

void printValues(int (*matrix)[],int rowSize)

 默认实参既可以在函数声明中指定,也可以在函数定义中指定,但是一个形参只能指定默认实参一次,通常在函数声明中指定默认实参

7 局部对象

 自动对象:函数调用时才存在的对象称为自动对象

 静态局部对象:对象位于函数的作用域,但声明周期跨越了函数的多次调用,则称为静态局部对象

8 内联函数

 函数内联说明对于编译器来说只是一个建议,编译器可以选择忽略;内联函数一般定义在头文件中

 编译器隐式的将在类内定义的函数当做内联函数

9 重载函数

void func(int a)
{
cout << a << endl;
} void func(int a,int b=)
{
cout << a << endl;
cout << b << endl;
} int main()
{
int x = ;
func(x);//overload ambiguous
}

 重载函数应该在同一个作用域中声明,否则某个作用域内声明的函数会屏蔽其他作用域声明的同名函数

 重载函数匹配二义性是错误的,形参是枚举类型和形参是整型不存在二义性

 重载函数实参匹配:精确匹配—类型提升—标准转换—类类型转换

10 通过函数指针调用函数不需要解引用操作符,直接调用

 函数指针做形参 returnType(paramList)或 returnType(*)(paramList)

 是函数还是函数指针,看名称是与()结合紧密还是与*结合紧密,()优先级高于*

c++ primer复习(二)的更多相关文章

  1. c++ primer复习(五):类

    一:基本内容 1 类 数据成员:用于存储与类对象相关联的状态 成员函数:对数据成员进行操作 类将接口与实现分离,接口指定了类支持的操作,操作的具体实现细节是类的设计者才需要了解 2 类成员 类成员可以 ...

  2. C#复习二(Twenty First Day)

    呵呵,又来到了今天的总结.这次主要复习了一下字符串的一些处理.今天就来总结一下. 理论: —String 字符串,字符串可以看成字符数组,不可变特性(通过for循环,修改string中的元素,失败!) ...

  3. JAVA基础部分复习(二、集合类型)

    对于这些常用的集合,建议还是需要先了解一下底层实现原理,这样在不同的使用场景下才能选择更好的方案. Set介绍以及对比,常用方法: package cn.review.day02; import ja ...

  4. C语言复习---二维数组和二级指针的关系:没关系,别瞎想(重点)

    前提:一维数组和一维指针为什么可以替换使用? ] = { , , }; int *p = a; ; i < ; i++) printf("%d ", *(p + i)); 上 ...

  5. vue复习(二)

    一.组件介绍 每一个组件都是一个vue实例 每个组件均具有自身的模板template,根组件的模板就是挂载点 每个组件模板只能拥有一个根标签 子组件的数据具有作用域,以达到组件的复用 二.局部组件 & ...

  6. 洛谷 P1509 找啊找啊找GF(复习二维费用背包)

    传送门 题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七夕这个日子,对于sq ...

  7. Linux 复习二

    第二章 一.Linux文件系统 1.基本概念 Linux文件系统为单根的树状结构,根为“/”,文件名大小写敏感,除了“/”都是可用字符,文件名以“.”开始的为隐藏文件. 2.常用文件夹 bin:可执行 ...

  8. flume复习(二)

    一.简介:flume是一种分布式.可靠且可用的系统,能够用于有效的从不同的源收集.聚合和移动大量的日志数据到集中式数据存储.它具有基于流数据的简单灵活的架构,它具有健壮的可靠性机制和许多故障转移和恢复 ...

  9. C++Primer笔记二

    真是一本好书,就这么点,就感觉学到很多了,当然也是我水平太差. 用shell或者bash的时候有一个文件重定向,就是每次程序运行的时候,我们都需要手动输入内容,然后程序输出内容,这时可以用文件来代替. ...

随机推荐

  1. UVa1449 - Dominating Patterns(AC自动机)

    题目大意 给定n个由小写字母组成的字符串和一个文本串T,你的任务是找出那些字符串在文本中出现的次数最多 题解 一个文本串,多个模式串,这刚好是AC自动机处理的问题 代码: #include <i ...

  2. MyBatis Oracle批量更新

    <update id="updateProductSerialNo" parameterType="java.util.List"> <for ...

  3. A Tour of Go Basic types

    Go's basic types are bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr ...

  4. Oracle ABP(Autotask Background Process)

    ABP相当于自动任务与调度程序之间的中介,其主要作用是将自动任务转换成Autotask作业,供调度程序执行.同样重要的是,ABP还维护所有任务执行的历史记录.ABP将其专用资料档案库存储在sysaux ...

  5. 用Windbg来看看CLR的JIT是什么时候发生的

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用Windbg来看看CLR的JIT是什么时候发生的.

  6. Ubuntu 12.04 wine QQ

    1.首先安装最新版的wine1.52,没记错版本号应该是这个 sudo add-apt-repository ppa:ubuntu-wine/ppa sudo apt-get update sudo  ...

  7. codeforces 132C Logo Turtle--- dp dfs

    题目在这里:点击打开链接 题意: F表示前进一步,T表示变成反方向 给一串FT字符,和一个n,表示可以改变多少次,求可以走到的离原点最远的距离 改变就是F变成T.T变成F 关键: dfs(int d, ...

  8. UVA 110 Meta-Loopless Sorts(输出挺麻烦的。。。)

     Meta-Loopless Sorts  Background Sorting holds an important place in computer science. Analyzing and ...

  9. android点滴之标准SD卡状态变化事件广播接收者的注冊

    眼下最完整的,须要注冊的动作匹配例如以下: IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED); int ...

  10. wechat客户端修改

    1. src/ui/adapter/FriendCardAdapter.java @Override     public View getView(int position, View conver ...