c++误区

转载 2006年06月21日 09:53:00

1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。

2. C++/CLI 和 C# 是微软的,它们与C和C++没有任何关系,虽然部分语法相似。但哪两种语言不相似呢?都是abc这26个字母。

3. 不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++,因为它们太古老了,不支持新的C/C++标准。不要使用CBX/VC++6.0/VC2005等对C/C++标准支持不好的编译器,虽然这些编译器适合工作,但不适合学习,因为它们中的语法陷阱很多。记住唯一适合学习的编译器是gcc/mingw。[antigloss注:Dev-C++ 使用的编译器就是gcc & g++]

4. 不要用""代替<>来包含系统头文件,虽然有些编译器允许你这样做,但它不符合C/C++标准。
错误的示例:#include "stdio.h",#include "iostream"。[antigloss注:<> 用于包含标准头文件系统头文件,"" 用于包含自定义头文件。标准似乎没有明确规定不准用 "" 包含标准头文件和系统头文件。使用 "" 包含标准头文件或者系统头文件只能说是一种不良风格。]

5. 不要将main函数的返回类型定义为void,虽然有些编译器允许你这样做,但它不符合C/C++标准。不要将函数的int返回类型省略不写,在C++中要求编译器至少给一个警告。错误的示例:void main() {},main() {} [antigloss注:C99和C++98都要求编译器对省略int至少发出一个警告]

6. 不要把VC++中的 #include "stdafx.h" 贴出来,它是预编译头文件。如同上菜时不要把厨师也放到托盘中。

7. [C++]不要#include <iostream.h>,不要#include <string.h>,因为它们已经被C++标准明确的废弃了,请改为 #include <iostream> 和 #include <cstring>。规则就是:
    a. 如果这个头文件是旧C++特有的,那么去掉.h后缀,并放入std名字空间,
        比如 iostream.h 变为 iostream。
    b. 如果这个头文件是C也有的,那么去掉.h后缀,增加一个c前缀,比如 string.h
        变为 cstring;stdio.h 变为 cstdio, 等等。
BTW:不要把string、cstring、string.h三个头文件搞混淆
BTW:windows.h不是C/C++的标准文件,因此它的命名C/C++不管。

8. 不要再写 char* p = "XXX" 这种语句,要写成 const char* p = "XXX",编译器之所以让前者通过编译是为了兼容以前的大量的旧代码。
BTW:const TYPE* p 和 TYPE const* p 是一样的,风格不同而已。
BTW:C语言中也有const关键字。

9. 不要在同一条语句中包含一个变量的多个++/--,因为它们的解析在C/C++标准中没有规定,完全取决于编译器的个人行为。

10. C/C++ 是平台无关性语言,因此系统相关的 process/GUI 等不在标准 C/C++ 库中。比如 graphics.h 和 windows.h 等是由某个编译器提供的,而不是由C/C++ 提供的。

11. C/C++只是语言,而且是平台无关性语言。论坛上有部分人甚至认为C就是dos,C++就是windows,那么请问linux是什么?

12.[C++]面向对象曾经是设计C with class(C++的前身)的主要目的,但C++不是,C++是一个多典范语言。主要支持过程调用、基于对象、面向对象、泛式编程这四种编程典范。当然还支持functional, generative,metaprogramming等典范。

13. 语法学家不是文学家,所以当你学会了一门计算机语言时,你还需要学习数据机构和算法,还需要掌握工具和平台API的用法。

14. C/C++ 是通用语言,因此语法很复杂,你应当裁减成适合你自己的语法集合,比如裁减成 better C 和 ADT。

15. C/C++是通用语言,因此只含通用的库,你应该丰富自己需要的库,比如汽车工业协会有自己的C/C++函数/类/模板库。

本文乃网上搜集得来,其版权归原作者和原出处所有。如有侵犯版权之处请与我联系,我将马上进行处理。

我的一个长久以来的误区,关于C

 我的一个长久以来的误区,关于C 很久以前学C语言的时候就知道了#define,它可以用来定义宏,宏至少有两个作用,一是作为常量,二是作为很短的函数或代码段。后来学到C++,提到了取代#define的...
  • songthin
  • songthin
  • 2007年09月19日 22:46
  • 4073

几个常见思维误区

有很多人大学毕业后,还是保持学习,这其实挺好的。但进入社会开始工作后,现在的学习跟大学时候的学习肯定是有区别的。最大的区别是,这个时候你所学的要用起来创造价值。 思维方式出问题 考场逻辑:我没有准...
  • luopeng123456789
  • luopeng123456789
  • 2015年10月14日 15:58
  • 523

项目管理十大误区

 随着计算机硬件水平的不断提高,计算机软件的规模和复杂度也随之增加。计算机软件开发从“个人英雄”时代向团队时代迈进,计算机软件项目的管理也从“作坊式”管理向“软件工厂式”管理迈进。这就要求软件开发人员...
  • a313586
  • a313586
  • 2008年04月17日 19:06
  • 278

做人工智能,先理解好这七大误区!

近几年,大数据、人工智能、AI等词已被媒体大肆宣传,让很多人赶鸭子上架也往这几个方面蹭一蹭,纷纷投入研发,但效果甚微,不禁让人产生疑问。人工智能真的如同媒体宣传那般神奇吗?今天大圣众包小编就为大家分享...
  • dashenghuahua
  • dashenghuahua
  • 2017年01月05日 11:58
  • 611

谈谈敏捷开发的误区

今天有人做演讲有关敏捷开发的。就演讲而言,讲得非常好,吐字清晰,语速适当,穿插例子,娓娓道来,将意思表达得非常清楚到位,是个很好的演讲。但就内容而言,我却有很大的异议,当中部分观点我认为是对敏捷开发的...
  • flowingflying
  • flowingflying
  • 2013年01月23日 23:12
  • 2650

REST和RESTful浅谈

越来越多的人开始意识到,网站即软件,而且是一种新型的软件。 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。 网...
  • fly_zhyu
  • fly_zhyu
  • 2017年07月30日 21:30
  • 260

软件测试的几大误区

我们暂且不去评析软件测试在当今it公司中的地位,只说大家对软件测试的认识。基于我短暂的经验,我总结出软件测试几个最常见的误区,供大家研究:   一大误区:测试简单,对技术要求不高   这是对测试最...
  • xqtesting
  • xqtesting
  • 2014年07月25日 12:37
  • 680

大数据的误区

本文仅从另一个视角看待大数据,有多少用户有真正的大数据,数据真的很值钱吗,小数据都没有用好如何用好大数据呢?...
  • zhulinu
  • zhulinu
  • 2016年03月28日 14:32
  • 1409

软件测试的误区

1.规范化软件测试是增加项目成本增加软件测试人员和预留项目测试时间,表面上看是增加了人员成本或延长了项目周期,为此会投入了更多的项目资金。然而我们知道,越早发现软件中存在的问题,开发费用就越低。美国质...
  • chicochen
  • chicochen
  • 2006年08月04日 08:56
  • 1164

Java知识的误区

本文章提供大家,是因为现在有很多朋友对JAVA语言的认识仍有不少误解,下面就介绍给大家十大常见的对JAVA语言认识的误区,希望对大家有用。 1.JAVA是HTML的扩充 JAVA是一个编程...
  • u014546739
  • u014546739
  • 2014年04月05日 11:19
  • 448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++误区
举报原因:
原因补充:

(最多只允许输入30个字)