话接上篇,从纯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. 在VS2012后的版本中做数据报表时,提示尚未指定报表“Report1”的报表定义

    有一群的朋友在用VS2012做数据报表时,老是提示 本地报表处理期间出错. 尚未指定报表“Report1”的报表定义 未将对象引用设置到对象的实例. 我看了一下,步骤没错,我用VS2010做了一下,一 ...

  2. java中文排序

    对中文名称进行排序,不多说,上代码 package test; /** * @Title: Person.java * @Copyright: Copyright (c) 2012-11-19 * @ ...

  3. 写出完美论文的十个技巧10 Tips for Writing the Perfect Paper

    10 Tips for Writing the Perfect Paper Like a gourmet meal or an old master painting, the perfect col ...

  4. 整理了一份招PHP高级工程师的面试题

    1. 基本知识点 HTTP协议中几个状态码的含义:1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码   说明 100   (继续) 请求者应当继续提出请求. 服务器返回此代码 ...

  5. arcgis engine 开发教程系列

    版权声明:        <ArcGIS Engine+C#实例开发教程>为3SDN(http://www.3sdn.net)原创教程,版权所有.禁止商业用途转载(如需请联系作者),非商业 ...

  6. IOS键盘收起

    1.点击Return按扭时收起键盘 - (BOOL)textFieldShouldReturn:(UITextField *)textField { return [textField resignF ...

  7. C# 对象与JSON串互相转换

    using System;using System.IO;using System.Text;using Newtonsoft.Json; namespace OfflineAcceptControl ...

  8. git push --no-thin

    有时候我们执行 git push 将一个 new branch 推送到远程仓库的时候,会被远程仓库阻止. 可能是我们没有相应的权限吧.然而,我在 git push 的时候加上 --no-thin 参数 ...

  9. poj 2528 Mayor's posters(线段树)

    题目:http://poj.org/problem?id=2528 题意:有一面墙,被等分为1QW份,一份的宽度为一个单位宽度.现在往墙上贴N张海报,每张海报的宽度是任意的, 但是必定是单位宽度的整数 ...

  10. BZOJ2229: [Zjoi2011]最小割

    题解: 真是一道神题!!! 大家还是围观JZP的题解吧(网址找不到了...) 代码: #include<cstdio> #include<cstdlib> #include&l ...