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. HW5.8

    public class Solution { public static void main(String[] args) { System.out.printf("%s\t%s\t%s\ ...

  2. jQuery中get与eq的区别

    get与eq的区别 .eq() 减少匹配元素的集合,根据index索引值,精确指定索引对象. .get() 通过检索匹配jQuery对象得到对应的DOM元素. 同样是返回元素,那么eq与get有什么区 ...

  3. 用sharding技术来扩展你的数据库(一)sharding 介绍

    数据库的sharding技术作为一个“新瓶装旧酒”的概念,在新的应用环境中被赋予了新的意义.随着云计算的发展,sharding在最近几年是越来越火热,越来越多的产品开始声称自己支持sharding功能 ...

  4. Java基础知识强化之IO流笔记56:IO流练习之 登录注册IO版

    1.  登录注册IO版的Java项目框架,如下: 2. 具体代码实现: (1)User.java(cn.itcast.game): package cn.itcast.pojo; /** * 这是用户 ...

  5. Java基础知识强化之集合框架笔记74:各种集合常见功能 和 遍历方式总结

    1. Collection add() remove() contains() iterator() size() 遍历: 增强for 迭代器 |--List get() 遍历: 普通for |--S ...

  6. Python 学习开发笔记之IO操作

    文件或者目录的路径操作 获取当前工作目录 import os import sys cwd = os.getcwd() 路径的拼接 os.path.join(path,"dir") ...

  7. semaphore(信号量)使用说明

    例子:      以一个停车场运作为例.为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的.这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待, ...

  8. Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project '项目名'

    问题描述: Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project 'myf'. ...

  9. java_method_删除事务回滚

    public String[] deleteEPGroup(String groupID, String groupName) { String[] operRes=new String[3]; if ...

  10. [转]内嵌页面iframe以及和其兄弟iframe的相互传值

    原文出处 iframe的调用包括以下几个方面:(调用包含html dom,js全局变量,js方法) 主页面调用iframe: iframe页面调用主页面: 主页面的包含的iframe之间相互调用: 主 ...