C++曾经是从C with class发展而来的,但是现在随着异常、模板、STL等等的发展,C++已变得相当的多样与庞大,这一方面让C++功能强大无比的多重范式语言,上天入地无所不能;另一方面,也给学习者带来了相当的困难:处处都有繁杂特殊用法,处处又都有例外,怎么办呢?

解决大问题的第一步是分解问题,最简单的办法是把C++视为各种“次级语言”组成的联邦,在每个次级语言的版块里,语法用法一般是相对统一直观的,书里给出了四个部分:

  • C部分。说道理C++仍然由C发展而来,简单的条件和循环,数组指针,到预处理指令,再去理解编译链接,流水效率等。在这些问题上,C++虽不是完全适用C的规则,但也是大同小异。

  • 面对对象部分。面对对象是C++诞生时最大的特色,在C struct的基础上,先理解构造析构拷贝,再了解封装继承多态,再到动态绑定等等,这是C++非常有趣的部分之一。

  • 模板部分。这是C++泛型编程的部分,初学感觉很简单,越往后走越能感到其抽象复杂与精巧。在威力强大的同时,他与一般的函数和类都有不同的规则,极容易出错。另外由于template自身就有完整的一套语法,它还带来的崭新的“模板元编程”,作为有趣却没什么大用的屠龙之技。

  • STL。STL是一个非常大的程序库,它含有各种容器与算法,拥有紧密的配合和协调,有自己的一套规矩,如果你使用STL,你也要遵守他的规约。

有了这样一个比较合理的分类,编写程序时就可以更高效更容易思考,因为我们经常只使用他的一部分,而不用关心全部;在制定学习计划时,你也可以分开来看:我对面向对象了解多少?对STL又有多了解?这样一来C++就容易理解得多。

(这是2006年的,四个部分已经包不下庞大的多的现代C++了。不过道理没变,把每个部分分开看,我们远远用不到全部功能。)

Effective C++:把C++看作一个语言联邦的更多相关文章

  1. Effective C++ 之 Item 1: 视C++为一个语言联邦

    Effective C++ Chapter 1. 让自己习惯C++(Accustoming Yourself to C++) Item 1. 视C++为一个语言联邦(View C++ as a fed ...

  2. Effective C++_笔记_条款01_视C++为一个语言联邦

    (整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) C++的各种能力和特性使它成为一个无可匹敌的工具,但也可能引发某 ...

  3. 读书笔记 effective c++ Item 1 将c++视为一个语言联邦

    Item 1 将c++视为一个语言联邦 如今的c++已经是一个多重泛型变成语言.支持过程化,面向对象,函数式,泛型和元编程的组合.这种强大使得c++无可匹敌,却也带来了一些问题.所有“合适的”规则看上 ...

  4. 【01】视C++为一个语言联邦

    1.C++是个多重范型编程语言:面向过程,面向对象,函数编程,泛型形式,元编程形式. 2.C++是一个语言联邦,包括四个次语言: a.C语言,C++以C语言为基础.但C语言有下列局限:没有模版,没有异 ...

  5. 【Effective c++ 读书笔记】条款01 视 C++ 为一个语言联邦

    一开始,C++只是 C 加上一些面向对象的特性.C++最初的名称 C with Classes 也反映了这个血缘关系. 但是,现在,当这个语言逐渐成熟,它变得更活跃更无拘束,更大胆冒险,开始接受不同于 ...

  6. Effective C++条款01: 视C++为一个语言联邦

    一开始C++定义为:C with Classes. 如今的C++已经是一个多重范型编程语言,可以把C++视为有四个次语言组成的联邦语言. C.C++任然以C为基础.区块.语句.预处理.内置语言类型.数 ...

  7. Effective C++ 条款01:视C++为一个语言联邦

    四个次语言 C Object-Oriented C++ Template C++ STL

  8. Effective C++之条款1:视C++为一个语言联邦

    C++中的sub-languages有如下四种: C Object-Oriented C++:   (classes ,encapsulation(封装),inheritance(继承),polymo ...

  9. EC笔记,第一部分:1.视C++为一个语言联邦

    C++可看作由以下四种次语言组合而成1.C语言    高效,内置数据类型,数组,区块,语句,指针,预处理器,没有重载.异常.模板2.类    构造,析构,封装,继承,多态,迟绑定3.模板    模板元 ...

  10. 读书笔记_Effective C++_条款一:将C++视为一个语言联邦

    C++起源于C,最初的名称为C with Classes,意为带类的C语言,然而,随着C++的不断发展和壮大,在很多功能上已经远远超越了C,甚至一些C++程序员反过来看C代码会觉得不习惯. C++可以 ...

随机推荐

  1. 从hp的暗影精灵4来看移动cpu的实际性能表现与官方出厂性能数据之间的差距

    手上有一款暗影精灵4的笔记本,CPU为i7-9750H,官方给出的睿频为4.5Ghz,但是自己使用过程中最高睿频只能达到3.9Ghz与4.1Ghz之间,根本就没有超过4.1Ghz的时候. (图的原网址 ...

  2. 什么是snapshot isolation

    数据库常见的4种事务隔离级别: (源自:(34条消息) 8. 事务隔离级别: 总结_oyw5201314ck的博客-CSDN博客_ck事务隔离) 大多数的数据库默认的事务隔离级别是Repeatable ...

  3. Analysis of Set Union Algorithms 题解

    题意简述 有一个集合,初始为空,你需要写一个数据结构,支持: 0 x 表示将 \(x\) 加入该集合,其中 \(x\) 为一由 \(\texttt{0} \sim \texttt{9}\) 组成的数字 ...

  4. 恭喜又一白鲸开源成员成为 Apache SeaTunnel PMC Member

    个人简介 王海林 白鲸开源研发工程师 GitHub ID:hailin0 做过性能监控.数据开发平台等,目前聚焦在数据集成同步及其周边生态的研发 问:作为白鲸开源的一员,您为社区做出过哪些贡献?具体方 ...

  5. 获取客户端真实IP备忘

    出于安全考虑,近期在处理一个记录用户真实IP的需求.本来以为很简单,后来发现没有本来以为的简单.这里主要备忘下,如果服务器处于端口回流(hairpin NAT),keepalived,nginx之后, ...

  6. python连接钉钉自动化提交OA审批

    一.准备工作 1.安装阿里云支持包,点击跳转:https://open.dingtalk.com/document/resourcedownload/download-server-sdk 2.注册钉 ...

  7. Github Dorisoy网盘项目

    相关github地址 https://github.com/dorisoy/Dorisoy.Pan?tab=readme-ov-file mysql8 sudo rpm -ivh mysql80-co ...

  8. 变分信息瓶颈 (Variational Information Bottleneck) 公式推导

    互信息 互信息用于表示两个随机变量相互依赖的程度.随机变量 \(X\) 和 \(Y\) 的互信息定义为 \[\begin{aligned} I(X, Y) & = \mathrm{KL}[p( ...

  9. Win32 滚动条控件

    1.创建控件 HWND hScrollBar = ::CreateWindow( WC_SCROLLBAR,                           //控件类名 NULL,        ...

  10. AntSK:在无网络环境中构建你的本地AI知识库的终极指南

    亲爱的读者朋友们,我是许泽宇,今天我将深入探讨一个引人注目的开源工具--AntSK.这个工具让您在没有互联网连接的情况下,仍然能够进行人工智能知识库的对话和查询.想象一下,即使身处无网络环境中,您也可 ...