话接上篇,从纯C环境转C++环境需要注意些什么呢?

没错,虽然C++曾号称兼容C,而且很多人甚至觉得C就是C++子集,但是c脑残粉一定知道,两者有很大的不同!

下面这些要点是比较突出的,后期我再补充其他的:

1.关于类型转换

C是弱类型的,至少比C++弱,在C下面很多类型转换我们不怎么管,编译器也会默认,最多有些讨厌的编译器(如某软家的)会给出警告,但是在C++下面就不一样了,这些都是error!!你不显示声明,就别想跨类型!!其实这也是好事,多打几个字母,反而代码清晰了严谨了:)

Example

在C里,你这样写:
  
          int* p;
          p = malloc(10 * sizeof(int));

在C++里,你必须这样写:   
  
          int* p;
          p = (int *)malloc(10 * sizeof(int));

2.关于字符数组

在C里,你可以声明一个字符数组,长度正好是串长,即:没有地方放‘\0’,但在C++里,你不能这样做:

char s[3] = "abc";(在C里正确,在C++里错误)。

我的建议是:如果你是个正常的人类,就是在C里面你也会写成:

char s[4] = "abc";

不过其实最好的写法是:char s[] = "abc"; 不是吗??

3.关于嵌套的类型定义

Example

struct S {
              int a;
              struct T {
                  int t;
              } b;
              int c;
              enum E { V1, V2 } e;
          };

struct T x;
          enum E y;

上述代码在C里面没问题,这是因为S、T、E三者的作用域(Scope)相同,但是在C++里,确实是错误的!在C++里,T和E的作用域是在S里的,想在外面使用只能S::T,这涉及到命名空间的问题,我们以后再说。

不过就算在C里,我也会把E和T单独拿出来定义,这种嵌套的写法,总有鸠占鹊巢的感觉~~

4.关于枚举类型

我们都知道,在C里面枚举和整型是一样的,枚举就是整型,于是我们这样干:

enum RGB { red, green, blue } rgb;
          ++rgb;

哦,看吧,世界多美好。然而C++的世界是残酷的,枚举是独立的类型,且不支持++这类整数操作符。于是你说没关系:"rgb=rgb+1;"就好了。很可惜。又错了。。。是的,因为没有显示的进行类型转换,于是正确的写法:

enum RGB { red, green, blue } rgb;

rgb = RGB(rgb + 1);

虽然有的长,不过还好啦,如果你的强迫症已经达到神级了,那么也有办法,给RGB加上++运算符的重载吧,具体内容以后说。

5.关于注释

//和/**/的双注释方案早就被C采用了,所以其实没啥特别要注意的,不过你非要这样写的话:

i = j //* comment */ k ;

那么连上帝也帮不了你了= =!

这次就写这么多了,下次继续补充~~

C++ 我想这样用(二)的更多相关文章

  1. bzoj1047-理想的正方形(二维单调队列)

    题意: 给一个矩阵,给出行列和每个数,再给出一个N,求出所有N*N的子矩阵中最大值最小值之差的最小值解析: 暴力枚举肯定不行,这题可以用二维单调队列做,把同一行的连续N个点缩成一个点保存最大最小值预处 ...

  2. 后端程序员看前端想死(二)进入页面之后js分析

    在上一篇中分析了一下以网页的组成.header中引入的乱七八糟的东西,现在进入到js中进行分析了 tuhooo啊,你是要搞前端了么? nonono,好玩,学一下 打开页面之后执行js的几种方法 直接写 ...

  3. Android开发之扫描二维码开发

    原贴地址:http://www.cnblogs.com/Fndroid/p/5540688.html 二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这样的,可以放心 ...

  4. Android开发学习之路-二维码学习

    这个月装逼有点少了,为什么呢,因为去考软件射鸡师了,快到儿童节了,赶紧写篇博纪念一下逝去的青春,唔,请忽略这句话. 二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这 ...

  5. iOS 读取相册二维码,兼容ios7(使用CIDetector 和 ZXingObjC)

    ios从相册读取二维码,在ios8以上,苹果提供了自带的识别图片二维码的功能,这种方式效率最好,也是最推荐的,但是如果你的系统需要向下兼容ios7,就必须用其他方式. 这里我选择的是 ZXingObj ...

  6. 个性二维码开源专题<介绍篇>

    由C#编写的个性二维码底层,已应用到 码晒客/疯狂创意二维码等项目上,并获得多项软件著作专利. 疯狂创意二维码 疯狂创意二维码是可用于生成风格独特的个性化二维码生成器,用户可以将目标信息输入到二维码生 ...

  7. IOS 二维码生成

    这篇博客将会介绍二维码的生成. 由于没有什么东西值得长篇大论的,所以这里我就通过代码的实现介绍二维码. 第一部分 第一部分是二维码的简单生成没有其他重点介绍. 效果图 代码部分 // // ViewC ...

  8. ZXing二维码的生成和解析

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法, 现在我简单介绍一下使用Java利用Zxing生成与解析二维码 注意: 二维码的生成需要借助辅助类( ...

  9. sqlite:多线程操作数据库“database is locked”解决方法(二)

    上一篇博客<sqlite:多线程操作数据库“database is locked”解决方法>通过注册延时函数的方法来处理数据库被锁的问题.此方法固然能解决问题,但是在多个线程向数据库写入大 ...

  10. EcShop二次开发系列教程–总纲

    EcShop作为老牌的B2C独立网店系统,功能非常全名,强大的文件.数据库缓存机制,保证前后台系统执行速度更快.系统平稳运行.但是过多的功能也或多或少的会影响到系统的整个效率,所有在使用EcShop搭 ...

随机推荐

  1. servlet会话技术:Session

    问题的引出 1.在网上购物时,张三和李四购买的商品不一样,他们的购物车中显示的商品也不一样,这是怎么实现的呢? 2.不同的用户登录网站后,不管该用户浏览该网站的那个页面,都可以显示登录人的名字,同时可 ...

  2. 58. Length of Last Word

    题目: Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return t ...

  3. 44. Wildcard Matching

    题目: Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single charact ...

  4. java 调用 phantomjs

    java 调用 phantomjs 2014-11-21 13:55 2034人阅读 评论(2) 收藏 举报  分类: phantomjs(2)  日前有采集需求,当我把所有的对应页面的链接都拿到手, ...

  5. Java API —— DateFormat类

    1.DateFormat类概述         DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间. 是抽象类,所以使用其子类SimpleDateForm ...

  6. 一个小应用的dbcp和c3p0配置实例

    以下是一个小应用的数据库连接池配置,包括DBCP和C3P0的配制方法 因为是小应用,完全不涉及访问压力,所以配置上采取尽量节约数据库资源的方式 具体要求如下:初始化连接数为0连接不够,需要新创建时,每 ...

  7. 一行很好的JS代码

    [].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.rand ...

  8. svn 版本升级的问题

    原创文章,转载请注明 svn本地版本由1.6升级到1.7后,再使用时遇到一些问题,这里记录一下以备忘. 升级后,使用任何命令 不能用了,提示的意思大致是本地的workcopy版本太低了(之前用1.6版 ...

  9. java.lang.NumberFormatException: For input string:"filesId"

    做项目时候,页面获取出现了这个问题.找了好久一直以为是我字段或者是数据库字段问题导致引起的. 最后才发现是 struts2中jsp我写错了一个参数,一直导致报错.后来改了就好了. 当大家遇到这个问题的 ...

  10. 运行Android应用时提示ADB是否存在于指定路径问题

    打开eclipse,选择指定的Android应用工程并Run,提示: [2014-06-28 11:32:26 - LinearLayout] The connectionto adb is down ...