2020年最全面的C++复习大纲!面向对象程序设计,建议收藏( 二 )
8.什么是先验条件(Precondition) , 什么是后置条件(Postcondition)?(google)
先验条件是在执行某段代码或正式规范操作之前必须始终为真的条件或谓词 。 比如输入一个时间必须小于24 。
后置条件是在执行某段代码或正式规范操作之后必须始终为真的条件或谓词 。 比如计算输入数字的平方根程序可能具有结果为数字的后置条件 , 且其平方等于输入 。
9.什么是名称空间(namespace)?它的主要作用是什么?要使用一个名称空间中声明的标识符 , 方式有哪些?
A namespace is a scope.
C++ provides namespaces to prevent name conflicts
名字空间实质上是一种作用域 。 名字空间是一种描述逻辑分组的机制 , 是为了解决C++中的变量、函数命名冲突而服务的 。
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中 。
由于namespace的概念 , 使用C++标准程序库的任何标识符时 , 可以有三种选择:
a、直接指定标识符 。
例如std::ostream而不是ostream 。 完整语句如下:
#include std::cout <<"hello!!"<< std::endl;
b、使用using关键字进行声明
显然 , 当某个名字在它自己的名字空间之外频繁使用时 , 在反复写它时都要加上名字空间来作限定词 , 是一件令人厌烦的事情 。 这时 , 可以通过一个使用声明而清除掉 , 只需要在某个地方说明 , 在这个作用域其后的代码中 , 使用此名字时可以自动解析出此名字所在的空间 。 例如:
文章插图
此后在使用cout和endl时 , 都无需再加上名字空间前缘了:
cout <<"hello!!"<< endl;
c、最方便的就是使用指令using namespace std;
一个使用指令能把来自另一个名字空间的所有名字都变成在当前名字空间内可用 , 就像这些名字就在当前名字空间中一样 。
例如 , 在一个名字空间内有命令 using namespace std; 则在此后的代码中(当前空间最小局部内) , 对于所有名字都无需有名字空间前缀即可使用 。
文章插图
10.什么是重载(Overloading) , 解释并举例说明?能否根据返回值不同 , 对函数进行重载 , 为什么?
C++有两种重载:函数重载和运算符重载 。
C++允许用同一函数名定义多个函数 , 这些函数的参数个数和参数类型不同 。 这就是函数的重载(function overloading) 。
运算符重载实质上是函数的重载 , 运算符重载通过运算符函数实现 。
int max(inta , intb,intc);double max(doublea , doubleb , doublec);long max(longa , longb , longc);
不能根据返回值不同进行重载 。
因为调用时不能指定类型信息 , 编译器不知道你要调用哪个函数 。
例如:float max(int a,int b);int max(int a,int b);
当调用max(1, 2);时无法确定调用的是哪个 , 单从这一点上来说 , 仅返回值类型不同的重载是不应该允许的 。
文章插图
11.关键字const的用法有哪些?(google)
一、定义常量
常量不可修改
const int val = 5; int const val = 5;
与#define宏定义常量的区别:
(1)const常量具有类型 , 编译器可以进行安全检查;#define宏定义没有数据类型 , 只是简单的字符串替换 , 不能进行安全检查 。
(2)有些集成化的调试工具能对const常量进行调试 , 对宏常量不能调试
二、修饰指针
(1)const int* p; //指针p指向的内容是常量 , 不可改变 。
(2)int* const p; //指针本身是一个常量 , 不可改变 。
(3)const int* const p; //指针本身和指向的内容都是常量 , 都不可以改变 。
区分方法 , *p代表对象内容 , p代表指针本身 , 看const修饰的是哪个 。
三、在函数中使用const
修饰函数参数
void function(const int Var);
表明参数在函数体内不能被修改 , 但此处没有任何意义 , Var本身就是形参 , 在函数内不会改变 。
包括传入的形参是指针也是一样 。
(1)使用引用参数 , 可以防止创建副本 , 减少内存开销 , 同时可以在函数中对引用参数修改 , 函数结束后 , 引用参数的修改仍然存在 。
(2)如果为了防止对引用参数进行修改 , 可以对该参数加上const关键字 。
修饰函数返回值
与修饰普通变量和指针意义差不多 , 而在传引用时 , 如果不希望函数返回值被改变 , 就可以添加关键字 const。
四、在类中使用const
修饰类成员变量
- 时尚先生|小米雷军成2020年最出圈企业家:获时尚双刊年度人物
- 网络覆盖|爱立信:2020年底,将有超过10亿人口获得5G网络覆盖
- 机器人|网络里面的假消息忽悠了非常多的小喷子和小机器人
- 张大|2020年财务公布:张大仙一年收入负1400W?活该是一姐
- 资本|2020年中国人工智能医疗行业发展现状分析 处于成长期且资本热度高
- 再见|2020年:三星S20再见了!2021年:三星S21我来了!
- 脉搏|把握时代发展脉搏,尽展巴蜀版权风采——2020年成都数字版权交易博览会成功举办
- 广告点击|广告效果评估:30天的广告时间评估最全面
- 中国汽车|2020年,我们攒了一个局,串了一条链,下了一盘棋
- 出炉|B站2020年度弹幕出炉!第一名竟然是它?