【转】C++之父:C++ 的五个普遍误解
文章三部分如下:
1.http://blog.jobbole.com/82460/
2.http://blog.jobbole.com/82461/
3.http://blog.jobbole.com/82628/
总结一下提到的五点:
- 1. “要理解C++,你必须先学习C”
- 2. “C++是一门面向对象的语言”
- 3. “为了软件可靠性,你需要垃圾回收”
- 4. “为了效率,你必须编写底层代码”
- 5. “C++只适用于大型、复杂的程序”
表达一下个人愚见:
1.“要理解C++,你必须先学习C”
不先学c的好处是,有些c的坑,可以不跳进去。因为c++其实隐藏了c里面的坑,所以直接用c++的话,可以避免一些奇怪的错误。(适合快速入门)
不先学c的坏处,有些底层的东西不懂没法走得更远,由于c能接触更底层,更少封装,可能更能程序员对内存分配等更熟悉(适合深入学习)
2.“C++是一门面向对象的语言”
effective c++ 中 条款1就已经提到c++是个语言联邦
确实是这样,c++不单纯面向对象,它有面向过程(c的部分),和泛型等,所以它实现一种东西可能会有好几种方法。
也就是在c++的代码中看到的不只是面向对象的东西,还会有各种东西混入。一个c++的程序员除了有oo的思维还不够?还要兼顾c++的其他特性?才能写出优秀的c++代码?
文中也提到了一些关于虚函数的不好之处:
引用原文:<C++代码必须是面向对象的想法(即到处使用类继承和虚方法),可能严重损坏效率。如果你需要一组类型的运行时解决方案,面向对象编程的观点是伟大的。我 就经常使用它。
然而,它是相对严格的(并不是每个类型都适应类继承),并且虚方法调用抑制了内链函数(它可以在一些简单而重要的场景中降低你50倍的速 度)。>
3.“为了软件可靠性,你需要垃圾回收”
我觉得这里主要说的是,程序员应该更多地去主动管理内存,而不是依赖于垃圾回收机制。还有我觉得这里有hardsell智能指针的嫌疑
4. “为了效率,你必须编写底层代码”
感觉这段主要是通过介绍stl的sort比c的qsort快,来说明c++的优势。。。哈哈
5. “C++只适用于大型、复杂的程序”
这段主要是想说明c++也可以很容易(少量代码)地写出小型程序?(应该没有脚本语言那么容易吧)
好吧,因为我也经常觉得c++开发好麻烦啊,一般写小工具都不会用c++,还觉得0基础学android也比学c++容易。
其实我认为就是c++用得不好会有问题,但不代表c++不能用来写小型工具吧?
【转】C++之父:C++ 的五个普遍误解的更多相关文章
- iOS开发--ChildViewController实现订单页的切换
先不说废话, 上效果图, 代码量也不大, 也不上传github骗星星了, 你们复制粘贴下代码, 就可以轻而易举的弄出一个小demo. 这个代码的实现并不复杂, 甚至于说非常简单, 就是逻辑有点小绕, ...
- 【分布式】Zookeeper使用--命令行
一.前言 在学习了Zookeeper相关的理论知识后,下面接着学习对Zookeeper的相关操作. 二.Zookeeper部署 Zookeeper的部署相对来说还是比较简单,读者可以在网上找到相应的教 ...
- iOS开发——UI基础-屏幕适配
一.适配 1.什么是适配?适应.兼容各种不同的情况 2.移动开发中,适配的常见种类 2.1系统适配 针对不同版本的操作系统进行适配 2.2屏幕适配 针对不同大小的屏幕尺寸进行适配 二.点和像素 1.在 ...
- 《深入理解javascript原型和闭包系列》 知识点整理(转)
深入理解javascript原型和闭包系列 对原型和闭包等相关知识的讲解,由浅入深,通俗易懂,每个字都值得细细研究. 一.一切都是对象 1. typeof操作符输出6种类型:string boolea ...
- 《深入理解javascript原型和闭包系列》 知识点整理
深入理解javascript原型和闭包系列 对原型和闭包等相关知识的讲解,由浅入深,通俗易懂,每个字都值得细细研究. 一.一切都是对象 1. typeof操作符输出6种类型:string boolea ...
- A*寻路算法的探寻与改良(二)
A*寻路算法的探寻与改良(二) by:田宇轩 第二部分:这部分内容主要是使用C语言编程实现A*, ...
- Js DOM 详解
DOM事件类 基本概念 DOM事件的级别 1.DOM0 element.onclick = function(){} 2.DOM2 element.addEventListener("cli ...
- Linux信号实践(3) --信号内核表示
信号在内核中的表示 执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending).进程可以选择阻塞(Block)某个信号.被阻塞的信号产生时将保持在未 ...
- 微信小程序----wxss设置样式
一.wxml 界面结构wxmL比较容易理解,主要是由八大类基础组件构成: 一.视图容器(View Container): 二.基础内容(Basic Content) 组件名 说明 组件名 说明 vie ...
随机推荐
- iOS 根据字符串数目,自定义Label等控件的高度
利用分类,NSString,增加一个方法. #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interfa ...
- tomcat accesslog日志扩展
由于工作需要,最近对tomcat的日志进行了一些研究,发现其日志大致可以分为两类,一类是运行日志,即平常我们所说的catalina.out日志,由tomcat内部代码调用logger打印出来的:另一类 ...
- iOS之隐藏键盘的方式
一.//触摸空白处隐藏键盘 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [_feedBackTextView r ...
- IOS开发基础知识--碎片30
1:ios 相册操作 ALAssetsLibrary 知识点 a ALAssetsLibrary 实例为我们提供了获取相册(照片app)中的图片和视频的功能.在ios8 photos framewor ...
- ListView setOnItemClickListener无效原因分析
前言 最近在做项目的过程中,在使用listview的时候遇到了设置item监听事件的时候在没有回调onItemClick 方法的问题.我的情况是在item中有一个Button按钮.所以不会回调.上百度 ...
- SQL Server自动化运维系列——关于邮件通知那点事(.Net开发人员的福利)
需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 邮件作为一种非常便利的预警实现方式,在及时性和易用性 ...
- Hadoop Cluster 安装
本篇源自Hadoop官网,先将中文翻译如下. 目标 本文章主要是描述如何安装和配置几个节点的Hadoop clusters,甚至于数以千计的节点数.为了了解详细的安装步骤,需要先了解如何安装在单台机器 ...
- ES5 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)
前面提到 ES5 对象属性描述符,这篇看看对象的扩展.密封和冻结. 扩展对象 Object.preventExtensions Object.isExtensible 密封对象 Object.seal ...
- RedHat6.2搭建FTP服务器
我的环境: A:Red Hat Enterprise 6.2 IP:192.168.16.12 此机作测试端 B:Red Hat Enterprise 6.2 IP:192.168.16.13 此机做 ...
- 自定义shiro的Realm实现和CredentialsMatcher实现以及Token实现
Realm是shiro比较核心的接口,简单说它的实现类就是校验用户输入的账号信息的地方.如果想自定义实现一般的配置文件如下: <!--自定义Realm 继承自AuthorizingRealm - ...