更多课程 选择中心

C/C++培训
达内IT学院

400-111-8989

C++易错细节——基础问题

  • 发布:网络
  • 来源:网络
  • 时间:2018-03-20 13:37

1、过分积极的注释

注释必须和代码一起维护,不应该描述显而易见的事,或把别的地方已说清楚的东西在说一遍。

2、幻数(字面常量)

字面常量没有语义,也没有真正的内存地址。

所以不可以取其地址,也不可以用于初始化普通引用,例如:long &r1 = 40000;

但是const long &r1 = 40000 却是合法的。

所以,尽量不要使用字面常量,而应该使用枚举常量和初始化过的常变量

3、全局变量

全局变量增加了模块间的耦合。

当全局变量(静态变量)用来初始化的值不能在编译时就计算妥当,则该初始化动作就会拖到运行期,这容易导致致命错误。可以使用单价模式解决这个问题

4、未能区分函数重载和形式参数默认值

函数重载主要用于一组抽象意义相同,但实现不同的函数。

而形式参数默认值主要出于简化,为函数提供更简洁的接口。

5、对引用的认识误区

(1)由于引用没有地址,声明引用的引用、指向引用的指针或引用的数组都是不合法的。

(2)引用不可以有常量性或挥发性,所以不可以用关键字const或volatile来修饰引用。

(3)任何能作为左值的复杂表达式都能作为引用的初始化物

(4)char *cp = reinterpret_cast(a); // 对cp取地址则错误

reinterpret_cast(a) = cp;// 正确,

(5)指向数组的引用保留了数组的尺寸信息,而指针则不保留(这个性质有时在数组名作为函数实参进行调用函数时使用)

(6)可以声明函数的引用:

ex: int f( double );

int (* const pf) (double) = f; // pf是指向函数f()的常量指针

int (&rf) (double) = f; // rf是函数f()的引用

可以把引用或函数本身(隐式)转换成指向函数的指针,再使用反引用语法。

6、对常量(性)的认识误区

(1)字母常量没有地址,永远不可以作左值

(2)int ci; const int *ip2 = &ci 的const只描述了通过ip2对ci的操作限制,而不是对ci的一般操作的限制。也就是说ci = 5可以,而*ip2 = 5不可以。

7、C语言的精妙之处

(1)如果?表达式中的两个选择结果都是左值,则该表达式本身就是个左值。

(2)case语句的标签必须是整形常量性的表达式(必须在编译时就要算出case中值)

8、区分可访问性和可见性

(1)要提供一个放置各种适当前置声明的专用头文件

(2)把class的接口与其实现分离,从而要达到真正的数据隐藏之境,而其不二法门则是运用桥接设计模式

(3)使用桥接,任何对于Class C实现的修改,只要不改变Class C的接口,影响就会被牢牢地钳制在一个单独的实现文件。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:C#程序员经常用到的10个实用代码片段
下一篇:C++后台开发需要掌握什么?

超全的C语言标识符知识

C指针——指针类型转换

C指针——指针和结构类型的关系

C指针——数组和指针的关系

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省