C++复试第四篇:语句+函数(重载)

目录

一、运算符

二、类型转换 & 语句

三、函数


一、运算符

        1. 成员访问运算符

            “ . ”用于获取类对象的一个成员,“ -> ”作用于指针类型的运算对象 

        2. sizeof运算符:获得表达式(不计算)或类型所占的字节数

char:1

引用:引用对象所占空间大小

指针:指针本身所占空间大小

数组:所有元素的大小

二、类型转换 & 语句

        1. 隐式类型转换:

                算术转换 ; 指针转换成bool、const...

        2. 强制类型转换:cast

        3. switch匹配

                break语句的作用——中断当前的控制流

                default标签—— 没有一个case标签能匹配上switch表达式的值

        ◇ 找错误:
                (c):case不能那么写

(c) unsigned evenCnt = 0, oddCnt = 0;
    int digit = get_num() % 10;
    switch (digit) {
        case 1, 3, 5, 7, 9:
            oddcnt++;
            break;
        case 2, 4, 6, 8, 10:
            evencnt++;
            break;
    }


unsigned evenCnt = 0, oddCnt = 0;
    int digit = get_num() % 10;
    switch (digit) {
        case 1: case 3: case 5: case 7: case 9:
            oddcnt++;
            break;
        case 2: case 4: case 6: case 8: case 0:
            evencnt++;
            break;
    }

                (d):case必须是int const

(d) unsigned ival=512, jval=1024, kval=4096;
    unsigned bufsize;
    unsigned swt = get_bufCnt();
    switch(swt) {
        case ival:
            bufsize = ival * sizeof(int);
            break;
        case jval:
            bufsize = jval * sizeof(int);
            break;
        case kval:
            bufsize = kval * sizeof(int);
            break;
    }

const unsigned ival=512, jval=1024, kval=4096;
    unsigned bufsize;
    unsigned swt = get_bufCnt();
    switch(swt) {
        case ival:
            bufsize = ival * sizeof(int);
            break;
        case jval:
            bufsize = jval * sizeof(int);
            break;
        case kval:
            bufsize = kval * sizeof(int);
            break;
    }

        4. 跳转语句

              ◇ break语句:终止离它最近的while、 do while、 for、 switch,并且从这些语句之后的第一条语句开始执行

              ◇ continue语句:终止循环中的本次迭代,开启下一次的迭代

              ◇ goto语句:无条件跳转到同一函数内的另一条语句

        5. 异常处理:

              ◇ throw表达式

              ◇ try语句块

              ◇ 异常类:标准库定义的一组类

        6. 控制流:程序的执行路径

三、函数

        1. 典型的函数包括:返回类型、函数名字、0个或多个形参,语句块 = 函数体

        2. 实参形参的初始值,类型必须一致

            形参列表可以为空,但是一定不能省略:void fun(){... ...}

        3. 名字有作用域,对象有生命周期

                  自动对象:会在块执行后(函数),变成未定义的,e.g:形参

        static 局部静态对象:虽然在函数体内,但是不会释放,知道本程序终止才会被销毁

        4. 形参是引用类型,会绑定到对应的实参上,实参被引用传递

            否则,仅仅是把实参的值拷贝给形参,在函数内改变形参的值不会对实参产生影响

        5.  当函数无需修改引用形参的值时最好使用const引用&,不然需要copy比较低效

             在形参中引用,可以返回额外信息

        6. 重载函数 :同一作用域内的几个函数名字相同,但是形参列表(个数/类型)must不同

             函数匹配 = 重载确定,编译器会根据参数的不同个数、不同类型自动确定应该调用哪一个

   当我们调用print函数时,首先找到的是int值的局部声明,编译器会自动忽略外层作用域

所以第一个print会显示错误

#include<string>
using std::string;

string read();
void print(const string &);
void print(double);

void Bar(int val)
{
    bool read = false;
    string s = read();
    void print(int);

|错!只能print innt
    print("value:");
|对!
    print(val);
    print(3.14);
}

但如果3个print声明都放在同一个外部作用域,那么都对,因为编译器会往外找,3个都能看到

        7. 默认实参:一个函数中的形参多次调用都被赋予了一个相同的值,默认实参之后的所有参数也都必须有默认值

        

        8. 函数匹配过程:

        (1)选出 同名+调用点可见候选函数

        (2)选出 形参与实参数量相等 + 类型相同/可转化可行函数

        (3)最后选出最佳匹配

      

        9. 函数指针:

                左边是返回类型,右边是形参列表

bool lengthCompare(const string &, const string &);
bool (*pf)(const string &,const string &);

|错!一个返回 指向bool指针 的函数
bool *pf(const string &, const string &);

        重载函数必须得指定选用哪个指针

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值