1. 不能重载的运算符

C++中绝大部分的运算符允许重载,具体规定见表:

表 C++允许重载的运算符

类型 运算符
双目算术运算符
  • (加),-(减),*(乘),/(除),% (取模)
关系运算符 ==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),>=(大于等于)
逻辑运算符 ||(逻辑或),&&(逻辑与),!(逻辑非)
单目运算符 + (正),-(负),*(指针),&(取地址)
自增自减运算符 ++(自增),–(自减)
位运算符 (按位或),& (按位与),~(按位取反),^(按位异或),,<< (左移),>>(右移)
赋值运算符 =, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>=
空间申请与释放 new, delete, new[ ] , delete[]
其他运算符 () (函数调用),->(成员访问),->*(成员指针访问),,(逗号),

不能重载的运算符只有5个:

不能重载的运算符
. (成员访问运算符)
.* (成员指针访问运算符)
:: (域运算符)
sizeof (长度运算符)
?: (条件运算符)

前两个运算符不能重载是为了保证访问成员的功能不能被改变,域运算符和sizeof 运算符的运算对象是类型而不是变量或一般表达式,不具备重载的特征。

2. 内联函数的作用?内联函数在哪定义?

内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。
内联函数可以在程序组多次定义,对于某个给定的内联函数,它的多个定义必须完全一致,基于这个原因,内联函数通常定义在头文件中。

3. 内联函数和宏定义的差别是什么?

(1)内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。 而宏只是一个简单的替换。
(2)内联函数要做参数类型检查,这是内联函数跟宏相比的优势。
(3)inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说inline增加空间消耗换来的是效率提高,这方面和宏是一模一样的,但是inline在和宏相比没有付出任何额外代价的情况下更安全。

inline一般只用于如下情况:
(1)一个函数不断被重复调用。
(2)函数只有简单的几行,且函数内不包含for、 while、 switch语句。

4. const引用和非const引用

5. 命名的强制类型转换操作符

参考:http://www.cnblogs.com/yshl-dragon/archive/2013/03/22/2975376.html
命名的强制类型转换符号的一般形式如下:
  cast-name<type>(expression);
其中 cast-name 为 static_cast、dynamic_cast、const_cast 和 reinterpret_cast 之一,

type 为转换的目标类型,而 expression 则是被强制转换的值。强制转换的类型指定了在 expression 上执行某种特定类型的转换。

(1) dynamic_cast:
  支持运行时识别指针或引用所指向的对象。

(2) const_cast:
  顾名思义,将转换掉表达式的 const 性质。
例如

const char *pc_str;
char *pc = string_copy(const_cast<char*>(pc_str));

只有使用 const_cast 才能将 const 性质转换掉。

(3) static_cast:
  编译器隐式执行的任何类型转换都可以由 static_cast 显式完成:
    double d = 97.0;
    // cast specified to indicate that the conversion is intentional
    char ch = static_cast(d);

当需要将一个较大的算术类型赋值给较小的类型时,使用强制转换非常有用。此时,强制类型转换告诉程序的读者和编译器:我们知道并且不关心潜在的精度损失。对于从一个较大的算术类型到一个较小类型的赋值,编译器通常会产生警告。当我们显式地提供强制类型转换时,警告信息就会被关闭。

如果编译器不提供自动转换,使用 static_cast 来执行类型转换也是很有用的。
例如,下面的程序使用 static_cast 找回存放在 void* 指针中的值:

  void* p = &d; // ok: address of any data object can be stored in a void*// ok: converts void* back to the original pointer typedouble *dp = static_cast<double*>(p);

可通过 static_cast 将存放在 void* 中的指针值强制转换为原来的指针类型,此时我们应确保保持指针值。也就是说,强制转换的结果应与原来的地址值相等。

(4) reinterpret_cast:
  通常为操作数的位模式提供较低层次的重新解释reinterpret_cast 本质上依赖于机器。为了安全地使用 reinterpret_cast,要求程序员完全理解所涉及的数据类型,以及编译器实现强制类型转换的细节。

例如,对于下面的强制转换:

  int *ip;char *pc = reinterpret_cast<char*>(ip);

程序员必须永远记得 pc 所指向的真实对象其实是 int 型,而并非字符数组。任何假设 pc 是普通字符指针的应用,都有可能带来有趣的运行时错误。例如,下面语句用 pc 来初始化一个 string 对象,它可能会引起运行时的怪异行为。
  string str(pc);

用 pc 初始化 str 这个例子很好地说明了显式强制转换是多么的危险。问题源于类型已经改变时编译器没有提供任何警告或错误提示。当我们用 int 型地址初始化 pc 时,由于显式地声明了这样的转换是正确的,因此编译器不提供任何错误或警告信息。后面对 pc 的使用都假设它存放的是 char* 型对象的地址,编译器确实无法知道 pc 实际上是指向 int 型对象的指针。

因此用 pc 初始化 str 是完全正确的——虽然实际上是无意义的或是错误的。查找这类问题的原因相当困难,特别是如果 ip 到 pc 的强制转换和使用 pc 初始化 string 对象这两个应用发生在不同文件中的时候。

强烈建议:程序员避免使用强制类型转换,强制类型转换关闭或挂起了正常的类型检查。

与旧式强制类型转换兼容
在引入命名的强制类型转换操作符之前,显式强制转换用圆括号将类型括起来实现:
  char pc = (char) ip;

效果与使用 reinterpret_cast 符号相同,但这种强制转换的可视性比较差,难以跟踪错误的转换。

6. 内部类和友元

参考:http://www.cnblogs.com/qzhforthelife/p/3226885.html

内部类的特点
1. 可以使用private、protected修饰。也可以使用abstract、final等修饰.
2. 内部类可以直接或利用引用访问外部类的属性和方法,包括私有属性和方法(但静态内部类不能访问外部类的非静态成员变量和方法)。内部类所访问的外部属性的值由构造时的外部类对象决定.
3. 外部类要访问内部类的成员,则只能通过引用的方式进行,可问内部类所有成员
4. 内部类可以继承同级的内部类,也可继承其它类(除内部类和外部类)
5. 内部类可以定义为接口,并且可以定义另外一个类来实现它
6. 内部类可以定义为抽象类,可以定义另外一个内部类继承它
7. 方法内的内部类不能加范围限定(protected public private),方法内的内部类不能加static修饰符,方法内的内部类只能在方法内构建其实,方法内的内部类如果访问方法局部变量,则此局部变量必须使用final修饰

友元特点:
1. 如果一个类指定了友元类,则友元类的成员函数可以访问此类包括非公有成员在内的所有成员。
2. 友元关系不存在传递性。
3. 友元声明只能出现在类定义的内部
4. 友元不是类的成员
5. 必须在友元声明之外再专门对函数进行一次声明。

追加:
2016-6-22,收到短信通知,通过烽火通信笔试环节,6月28日10:00点吴家湾烽火科技大厦4楼国会厅,参加初面。
后面几天好好准备面试的东西,知识点总结。

2016-6-15《烽火通信科技股份有限公司》笔试题总结相关推荐

  1. 烽火通信科技股份有限公司

    烽火通信科技股份有限公司(烽火通信)是国内优秀的信息通信领域设备与网络解决方案提供商,国家科技部认定的国内光通信领域唯一的"863"计划成果产业化基地."武汉·中国光谷& ...

  2. java面试真题 烽火通信_【烽火通信科技股份有限公司Java面试】烽火通信面试总结~~-看准网...

    烽火通信科技股份有限公司(烽火通信)是国内优秀的信息通信领域设备与网络解决方案提供商,国家科技部认定的国内通信领域唯一的"863"计划成果产业化基地."武汉 中国光谷&q ...

  3. 面试经历---广东耶萨智能科技股份有限公司(2016年01月11日上午面试)

    广东耶萨智能科技股份有限公司是一家做跨境玩具贸易的公司,约我2016年1月11日上午过去面试. 一.笔试题 1.   写出下述语句的结果 Int a=1,b=0;  System.out.printl ...

  4. 云宏信息科技股份有限公司

    云宏信息科技股份有限公司 云宏信息科技股份有限公司 posted on 2017-08-21 06:15 lexus 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnb ...

  5. 南京欣威视通信息科技股份有限公司

    南京欣威视通信息科技股份有限公司 C语言笔试题目 姓名: 得分: 注意事项,答题时间为45分钟,请勿上网查询.共计9道题目,前8题满分为100分,附加题50分: 1. (5分)写一个标准宏MIN,这个 ...

  6. 中国移动通信联合会元宇宙产业委员会联席秘书长、北京金山顶尖科技股份有限公司元宇宙研究院院长李正海组织百城万项.石景山元宇宙发展暨工业元宇宙三人行直播第四期活动并做《城市元宇宙体系下的产业发展策略》

    中国移动通信联合会元宇宙产业委员会联席秘书长.北京金山顶尖科技股份有限公司元宇宙研究院院长李正海组织百城万项.石景山元宇宙发展暨 工业元宇宙三人行直播第四期活动并做<城市元宇宙体系下的产业发展策 ...

  7. 作者:邓晖(1974-),中兴软创科技股份有限公司智慧产品部副部长。

    邓晖(1974-),中兴软创科技股份有限公司智慧产品部副部长.1999年毕业于哈尔滨工业大学机器人研究所,加入中兴通讯股份有限公司计费产品线.有15年的电信行业产品研发.交付及管理从业经验.历任高级研 ...

  8. 作者:季统凯,男,博士,中国科学院云计算中心主任、研究员,国云科技股份有限公司董事长,中国云计算专家委员会委员。...

    季统凯,男,博士,中国科学院云计算中心主任.研究员,国云科技股份有限公司董事长,中国云计算专家委员会委员.中国大数据专家委员会产学研应用组组长.国家发展与改革委员会ICC专家库专家.工业和信息化部云计 ...

  9. 作者:龚南宁,数据堂(北京)科技股份有限公司对外合作部副总监

    龚南宁,男,数据堂(北京)科技股份有限公司对外合作部副总监,主要研究方向为数据商品化.数据银行.

最新文章

  1. 东北大学计算机 大一物理考试题,2020年东北大学822《大学物理》考试大纲及样题...
  2. 桥牌笔记:当其它希望不存在时,才进行飞张
  3. Scala父类构造方法
  4. 浅谈html的语义化和一些简单优化,html标签语义化
  5. vb.net服务器启动后cpu占用了70_记一次服务器被异常程序占用的解决过程(怀疑黑客攻击)...
  6. MySQL 储存过程-原理、语法、函数详细说明
  7. jsp和mysql答辩_jsp+servletmysql 毕业论文答辩理系统(带远程指导)
  8. MFC不能用UpdateData的解决方法
  9. 形容时间过得快的句子,一些表示时间过得快的句子
  10. final 在java,final 在java中的注意点
  11. LeetCode(160): Intersection of Two Linked Lists
  12. xp系统怎么开启usb服务器,windowsxp系统设置usb手机网络分享的方法
  13. HB哈勃与HB公链【尊皇社区】深度揭秘分析!
  14. matlab如何写一个循环,matlab中for循环怎么写
  15. 读书之《别做正常的傻瓜》
  16. 群晖NAS教程(二十三)、利用Docker安装mysql8,并使用ipv6和域名访问
  17. 谈论bringup我们到底在谈论什么?
  18. Windows 技术篇-安装指定版本Internet Explorer浏览器方法,IE浏览器的升级和降级
  19. 如何让你画里的鱼,游进海里?
  20. 2021年高级维修电工证考试题库,职业技能鉴定职业资格

热门文章

  1. matlab怎样计算兰彻斯特方程,一步一步建立战斗模型
  2. 水星450r虚拟服务器,水星(MERCURY)MW450R V4无线路由器设置方法 | 192路由网
  3. flink中数据集的循环iterate
  4. C语言:L1-018 大笨钟 (10 分)
  5. 学姐报了几门选修课,我用Python给她做了一个自动答题软件
  6. 别忙,我先感觉一下自己
  7. 从代码角度理解什么是蜜罐
  8. 脑子不灵活适合学计算机吗,开学就初三了,初一初二什么也不学但是老师都说我脑子灵活不知道初三能学好吗...
  9. 软件测试现在想拿到20k的高薪offer,到底是不是痴人说梦
  10. 白色iPhone4即将上市