C++ 我想这样用(四)

嗯,已经是第四篇了,这篇起我就要开始细说语法了,不过在那之前再次申明下主旨:"C++我想这样用" 系列文案是为C程序员打造的,不是C++程序员。

我的终极目标是:让那些觊觎面向对象范式,却又重度强迫症的C脑残粉能够在C++环境下(如C++IDE、C++编译器等)不妥协的,用他们的习惯的C风格,写出他们觊觎很久的带有面向对象的代码。这么啰嗦的话我不想次次都提,但是又怕被不明情况的人乱骂一气,于是我想到了一个词来高度概括上述宗旨-----C with Class!

没错,带类的C,这是C++早期的称呼,但是日渐壮大的C++巨人早就抛弃(背离)了这个乳名,所以我不妨拿来用,我很喜欢这个名字,虽然很多C++程序员用它来鄙视同行的代码,但随他们去吧,因为我又不是他们的同行,我是地地道道的C程序员~~,哈哈!!

我案头摆着的是C++入门神书《Essential C++》,由此进入正题:

第一部分:内建类型&控制流程&基本IO

《Essential C++》第一章中提到的算得上常用的几个数据类型:整型int、实型float double、字符型char、布尔型bool、数组array、字符串string、容器向量vector、指针*

对于C脑残粉来说,指针什么的弱爆了,我要是再啰嗦真的会被灭掉,我只说要注意的:

1.关于布尔类型:在这个系列文章里,C++自带的bool是被禁用的!!原因很简单,我们有C99的<stdbool.h>。什么?你的没有??你不愿意用??好吧,那就继续用你的int代替吧,反正你不会用C++的那个就是了,谁让咱们全是强迫症呢。。。。。。。。。贴出<stdbool.h>的正确用法,你可别弄错了,不然还好意思叫脑残粉?

  #include <stdbool.h>
  bool b = false;

  /* 或者写成_Bool b = false; */
  ...
  b = true;
嗯,进一步解释下,其实_Bool类型是早在stdio.h里就有的,但是没有true和false,然后为了和某++兼容在stdbool.h里,把_Bool宏定义成了bool,把true和false宏定义成了1和0

2.关于string和vector:Essential C++的作者是推荐用这两个东西来彻底代替C的字符串和数组的。没错,如果我是C++程序员,我也会这么做!!但是我是地地道道的Cer,所以在本系列中,这两者同样被禁用!!确实他们很高级,很便利,但是你一点点的贪图这些便利,就会使你逐渐迷失,最后真的变成一个不伦不类的C++程序员!我真的不是开玩笑,凡事莫忘初衷。

3.关于字符常量:这个不好发现,在C里面字符常量是int,但是在C++里面,char就是char,所以导致:

Example
          i = sizeof(‘a‘);

在C环境下,结果大于1,在C++下结果恒为1。其实如果是比较熟练的C程序员一定知道,由于内存对齐之类的种种原因,sizeof的结果并不总是那么可靠的,我们平时编程要多加小心才是。

说完了类型接着说控制流程,while啊for啊什么的真真是没啥区别的,不然也不要叫C++了!我就不讲怎么用这写弱智的东西了,于是百度半天还真有异常:

4.关于跳转:

Example

goto LABEL;
          {
              int v = 0;
              ...
          LABEL:
              ...
          }

假设LABEL后的代码是不依赖于局部变量v的,那么上述代码在C里面是合法的,但是在C++里,永远不要企图用goto或switch来跳过块区域内的对象初始化。不过我目前的水平,还没弄出过这么高级的写法,貌似在某些库的源码里真的见识过。。

5.关于IO和重定向:最后说说输入输出吧,作为一个C程序员,有stdio.h搞定不了的I/O吗?printf的效率比不上cout么?看吧,就这样,别去想什么cin和cout了!如果想玩IO重定向什么的,先去研究研究shell把!相信我,那些那你目瞪口呆的小东西没有一个是用cin、cout做的!!

第1部分就到这里了。。。。。再见

C++ 我想这样用(四)

时间: 2024-11-06 03:55:30

C++ 我想这样用(四)的相关文章

Android点击事件(click button)的四种写法

在学习android开发和测试的时候发现不同的人对于click事件的写法是不一样的,上网查了一下,发现有四种写法,于是想比较一下四种方法的不同 第一种方法:匿名内部类 代码: package com.zdx.testdemo1; import javax.security.auth.PrivateCredentialPermission; import android.app.Activity;import android.os.Bundle;import android.view.Menu;i

学员心声(四)

学员:徐同学 一句话介绍学习感受:庆兴把钱花在刀刃上 学习经历: 1991年生,目前还在杭州重点高等学校读书,2014年本科毕业几乎是混着过来的,也就懂点STM32和51单片机,做个几个简单的电子小设计,但是对于嵌入式,基于操作系统的应用并没有太多了解.虽然一直想学习,毕竟这是个软件当道的世界,硬件方面的工作确实不太好找(主要还是水平不行,公司要求颇高). 15年5月无意间看到了韦东山老师的视频,在此之前看过**的视频,大都是对着LDD第三版的概念泛泛而谈,听过看过之后就忘了,总感觉用不起来.然

闲话js前端框架(3)——再也不想碰DOM

闲话js前端框架 前端人员=美工+设计+代码+测试 --题记 专题文章: 一.从avalonjs的模板说起 二.庞大的angularjs 三.再也不想碰DOM 四.组件化?有没有后端的事? 五.再看自己一年前设计的微型渲染引擎 六.在浏览器标准上做文章 七.抛开浏览器,构建应用容器 八.为何Flash.银光和Java都在网页端一蹶不振 本文属 西风逍遥游 原创, 转载请注明出处: 西风世界 http://blog.csdn.net/xfxyy_sxfancy 三.再也不想碰DOM 我只能说,在复

Android UI开发第二十四篇——Action Bar

Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为action bar能够使应用程序给用户提供一致的界面,并且系统能够很好根据不同的屏幕配置来适应操作栏的外观.你能够用ActionBar的对象的API来控制操作栏的行为和可见性,这些API被添加在Android3.0(API 级别 11)中. Action bar的主要目的是: 1.  提供一个用于识别应用

2016年12月25 至 2018年12月25,致未来

未来总是充满遐想,两年的时间给自己一个成长,多的是努力,今天又是一年圣诞,孤独感爆棚,这是必经之路吧:成功的路上总是充满孤独与落寞,看了一篇文章,这世界程序猿分为三等,天才型,理想型,庸才型:我想我要做第四种--勤奋型:给自己加油!两年很短,多一点努力吧! 2016/12/25  圣诞  合肥   雨 随感

java web基础2

servlet   oracle 数据库使用比较繁琐,以后可能会和mysql 一起混着用. 两个在连接的时候没有太大的区别. 数据库要支持中文,要设定正确的字符集  gbk utf-8 jdbc 驱动要进行正确的编码和解码 jdbc驱动在插入中文数据时 要做编码处理在查询中文数据时要做解码处理 mysql 的jdbc 驱动的某些版本 的 解码和编码有问题要添加 ?useUnicode=true&characterEncoding=utf-8 确保可以正确的编码和解码  或者换一个jdbc驱动.

我是一只It小小鸟读后感

十分遗憾,由于有分析化学考试,我不能来参加这次活动.那也就无法当面把自己想说的展示给大家,只好写这样一小篇文章,简要的说一下吧. 说实话,让我为一本书做一个ppt,我还真有点不知道如何下手.ppt毕竟只有那简短的内容,而读完一本书,尤其是这样一本对于大学生来说有比较强的现实意义的书,心里肯定还是有一些话要说的. 一群已经毕业多年,生涯已经走上正轨的IT人,写下自己当年的岁月往事,得意的,成功的,失意的,失败的,只为了给像和当年的自己一样迷茫的小小IT人一些指导.但是,对于年轻的我们来说,还有什么

什么是Java

前言 让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/: 97%的企业桌面运行Java 美国有89%的桌面(或计算机)运行Java 全球有900万Java开发人员 开发人员的头号选择 排名第一的部署平台 有30亿部移动电话运行Java 100%的蓝光盘播放器附带了Java 有50亿张Java卡在使用 1.25亿台TV设备运行Java 前5个原始设备制造商均提供了Java ME 很牛逼不 是吗?OK,这么牛逼的背后,我们Java开发人员有想过每天

基于Docker的持续发布都要解决哪些问题 第一集

郑昀编著,文字资料来自于张帆.白俊华.刘飞宇以及网络资料 创建于2015/10/21 最后更新于2015/10/29 关键词:Docker,容器,持续集成,持续发布,CI,私有云 本文档适用人员:广义上的技术人员 提纲: 集装箱还是卷挂载? Host Networking 还是 Bridge Networking? 容器要固定IP吗? 容器内部如何获取宿主机的IP? 待续   首先,你要明白容器并不是虚拟机,虽然它可以解决虚拟机能够解决的问题,同时也能够解决虚拟机由于资源要求过高而无法解决的问题

闲话js前端框架(2)——庞大的angularjs

闲话js前端框架 前端人员=美工+设计+代码+测试 --题记 专题文章: 一.从avalonjs的模板说起 二.庞大的angularjs 三.再也不想碰DOM 四.组件化?有没有后端的事? 五.再看自己一年前设计的微型渲染引擎 六.在浏览器标准上做文章 七.抛开浏览器,构建应用容器 八.为何Flash.银光和Java都在网页端一蹶不振 本文属 西风逍遥游 原创, 转载请注明出处: 西风世界 http://blog.csdn.net/xfxyy_sxfancy 二.庞大的angularjs Ang