`

改善c++程序建议——从c继承而来(一)

 
阅读更多
1、
不要让main函数返回void:
Void main()这样的代码在vc中是容许的但是,gcc就不行了!
要想保证程序具有良好的可移植性能,就要标明main函数返回int,而不是void。强烈建议使用以下形式:
Int main()
{
return 0;

}
2、
区分0的4中面孔:

FALSE\TRUE是int型,而false、true是bool类型;
3、避免那些运算符引发的混乱:

C++的运算符比较多,他们拥有不同的优先级和结合律,不过,我们可以用括号把意图表示的更清楚,所以不要吝惜使用括号,即使有时并不必要:
if( (a & b) == c)

4、
对表达式计算顺序不要想当然:
表达式计算顺序是一个很繁琐但是很有必要的的话题:
1) 针对操作符优先级,建议多写几个括号,打你的意图表达的更清晰;
2) 注意函数参数和操作数的评估求值顺序问题,小心陷阱,让你的表达式不要依赖设计顺序;
5、
小心宏#define使用中的陷阱:
1) 用宏定义表达式时,要使用完备的括号;
由于宏只是简单地字符替换,宏参数如果是复合结构,那么替换后要是不要括号保存个宏参数,就会出现优先级混乱问题。
2) 使用宏时,不允许参数发生变换:
3) 用大括号将宏所定义的多条表达式括起来:
如果没有大括号,宏定义中的多条表达式很有可能只用第一句被执行;
6、
不要忘记指针变量初始化:
7、
逗号分隔的表达式由于语言规则的不直观,容易产生理解上的误差,在使用逗号分隔表达式是,c++会确保每个表达时都被执行,而整个表达式的值,则是最右边表达式的结果;
8、
函数指针在运行时的动态调用中应用广泛。但是直接定义复杂的函数指针会由于有太多的括号,而是代码的可读性下降。使用typedef可以让函数指针更直观和以维护。
9、
防止重复包含头文件:
1)
为了避免重复包含头文件,建议在声明没个头文件时采用“头文件卫士”加以保护,如:
#ifndef  _PROJECT_PATH_FILE_H_
#define   _PROJECT_PATH_FILE_H_

...........
#endif

2)
为了避免宏名撞车,头文件基于所在项目源代码树的全路径而命名;
10、
优化结构体中元素的布局:
如下我们遵循结构体默认的字节对齐方式:结构体中的变量按照类型大小从小到大一次声明,尽量减少中间的填充字节;
#include <iostream>
using namespace std;

struct A
{
int a;
char b;
short c;
};

struct B
{
char b;
int a;
short c;
};
int main()
{

// sizeof(struct A);
// sizeof(struct B);
cout << " 结构体A" << sizeof(struct A) << endl;
cout << " 结构体B" << sizeof(struct B) << endl;
return 0;
}

分享到:
评论

相关推荐

    Visual C++面向对象程序设计-课件.rar

    这门课件的出现,对于学习者来说,无疑是一个宝贵的资源,尤其是那些热衷于C++编程和软件开发的专业人士。下面将详细阐述C++面向对象程序设计中的关键知识点,并结合课程标签进行拓展。 1. **C++简介**:C++是C语言...

    C++问答题整理——together1

    C++程序可以调用C的函数,但需要注意C++的name mangling(名称修饰)问题,需要使用extern "C"来保持与C的兼容性。此外,C++的内存管理和类型系统与C有所不同,比如C++提供了new和delete操作符,以及构造函数和析构...

    编写高质量代码:改善C 程序的150个建议

    #### 三、第一章:从C继承而来的 这一章首先强调了C和C++之间的密切关系。C++被视为“更好的C”,继承了C语言的许多语法特性,并在此基础上进行了扩展和改进。为了更好地理解这一点,我们首先来看一个有趣的例子: ...

    c++编程思想 中文版(Thinking in C++)

    C++是一种通用、面向对象的编程语言,由Bjarne Stroustrup于1979年在贝尔实验室开发,它是C语言的超集,既保留了C语言的效率,又引入了面向对象编程的概念。C++的核心特性包括类、模板、异常处理、命名空间、运算符...

    高质量C++&C 编程指南

    标题“高质量C++/C编程指南”明确地指出了这本书的主要内容是关于如何编写高质量的C++和C语言程序。这暗示了书中将涵盖一系列指导原则和技术,旨在帮助程序员提高其编程实践水平。 #### 描述解析 描述部分提到:...

    C++基础课程讲义

    C++作为一门强大的编程语言,在继承了C语言的基础之上,增加了面向对象编程的特性,极大地提升了程序的结构化、模块化程度,同时也改善了软件的可维护性和可重用性。通过学习C++基础课程,不仅可以掌握语言本身的...

    JavaScript讲义.pdf

    JavaScript的核心语法与C、C++和Java等语言类似,如条件判断、循环和运算符等,但它是一种松散类型的语言,意味着变量不必有明确的数据类型。 ##### 2. 对象属性 JavaScript中的对象采用属性名到任意值的映射方式,...

    面向对象软件构造object-oriented software construction

    在OOSC中,软件被组织成一系列相互协作的对象,这些对象通过封装、继承和多态等机制来实现复杂的功能。 1. 封装:封装是面向对象的核心特性之一,它将数据和操作这些数据的方法捆绑在一起,形成一个独立的单元——...

    超爽的自学课件(java)

    1) 第1章:对象入门 这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。...

    JAVA编程语言及其应用

    本文旨在介绍近年来在网络中兴起的一种面向对象的编程语言——JAVA。文章详细阐述了JAVA语言的特点、基本数据类型、对象以及其广泛应用领域。随着互联网(INTERNET)的普及和万维网(WORLD WIDE WEB)的广泛应用,...

Global site tag (gtag.js) - Google Analytics