草 稿

《c++初学者指南》读书笔记

  1. 声明

    本轻单用于记录读书笔记 属于个人轻单

    用于学习解惑 初学c++ 都是些基础问题

    不定期更新

  2. Java 和 C#都实现了跨平台和可移植的编程, C++为什么不能了

    Java 和 C#之所以能实现跨平台,可移植的编程,而 C++不能是因为它们的编译器生成的 目标代码不同。

     

    就 C++而言,编译器的输出是机器代码,这是 CPU 可以直接执行的。因此 它是紧密和指定的 CPU 以及操作系统相关的。如果想让 C++程序在不同的系统上运行 ,则 需要针对该目标系统进行代码的重新编译。为了让 C++程序可以在不同的环境上运行,就 需要生成不同的可执行版本。

     

    Java 和 C#是通过把代码编译成伪码,一种中间语言。就 Java 而言,这种伪码是在运行时系统上运行的,这就是 Java 虚拟机。对 C#而言,这就是 CLR (公共语言运行时)。因此,Java 语言的程序可以在任何有 java 虚拟机的环境下运行,C# 的程序可以在任何实现了 CLR 的环境下运行。因为 Java 和 C#的运行时系统处于程序和 CPU 之间,和 C++相比,这就引起了多余的开销。这就是为什么,对等情况下, C++程序 比Java和C#程序运行快的原因了。

     

    Java 和C#的开发是为了满足互联网上在线程序的统 一编程需求。(C#的设计也是用来简化软件构件的开发)。互联网上连接的是许多不同 的 CPU 和操作系统。因此跨平台和可移植性就成了最重要的着眼点。

     

    第一个着眼于这个问题 的语言就是 Java。Java 语言编写的程序可以在很多不同的环境下运行。因此, Java 程序 可以在互联网上自由运行。然而这样做的代价就是牺牲了效率, Java 程序的执行要比 C++ 程序慢许多。同样的事情也发生在 C#身上。

     

    最终分析,如果你想开发高性能软件,就是 用 C++。如果你想开发高度可移植的软件,就是用 Java或者C#。

     

    最后一点:请记住,C++, java 和 C#是用来解决不同问题的。这里并没有那个语言好,那个语言不好的问题,而是那 个语言更适合用来完成我们手头工作的问题。

  3. 面向对象的编程

    通常情况下,有两种方式来组织程序 :以代码为中心或者以数据为中心 。

     

    通过结构化的编程技术,程序通常是以代码为中心来组织的。

    这种方法可以被认为是 “代码作用于数据”。

    面向对象的编程则是以数据为中心 。

    程序以数据为中心进行组织 ,主要的原则就是 “数据控制代码”。

    在面向对象的语言中,我们定义数据和允许作用于这些数据的例行程序段。因此,数据的类型明确定义了可以作用在这些数据上的操作。

  4. 封装

    C++中最基本的封装单元就是类。一个类定义了对象的通用形式。它同时定义了数据和 作用于这些数据的代码 。

    C++使用类来构建对象 。对象是类的实例 。因此,一个类实际上是 构建对象的工厂。 类中的数据和代码称为类的成员。更详细一点来说,成员变量,也叫做实例变量,是类 定义的数据。成员函数是作用于这些数据的操作。函数在 C++中是针对子程序的术语。

  5. 多态

    一个接口,多种方法。

    通过对一组相关的活动定义一个通用的接口 。比如画圆。

    多态性通过一个接口来阐明动作的通用性 。编译器针对应用的情况来选择具体应该是那个动作 (方法)。程序员不必手工来做这种选择。我们只需要记住并使用这个通用的接口就可以了。

  6. 标识符与关键字

    在 C++中,一个标识符可以是一个函数、变量或者任何其它用户自定义项目的名字。

    使用大写字母和小写字母是有区分的 ;也就是说,在 C++中,myvar 和 MyVar 是两个不同的名字。

    任何关键字都不能作为标识符的名字 。

    另外预先定义好的标识符,例如 cout 是不受这个限制的。

    下面是一些合法的标识符实例 Test x y2 MaxIncr up _top my_var simpleInterest23 不能以数字开头。因此 98OK 是无效的标识符。

     

     

    关键字:在 C++中所有的关键字都是小写的

    asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespac new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

  7. 数据类型

    类型 意义 char Character 字符 wchar_t Wide Character 宽位字符 int Integer 整型数 float Floating Point 单精度浮点数 double Double Floating Point 双精度浮点数 bool Boolean 布尔类型 void Valueless 空类型

     

    数据类型的修饰符如下: signed unsigend long short 修饰符 signed、unsigned、long、short 都可以用于修饰 int。修饰符 signed 和 unsigned 可以用来修饰 char 类型。类型 double 可以被修饰符 long 来修饰。

     

     

    ANSI/ISO C++中定义的每种类型的最 小取值范围。 类型 最小取值范围 char -127 到 127 unsigned char 0 到 255 signed char -127 到 127 int -32767 到 32767 unsigned int 0 到 65535 signed int 和 int 的一样 short int -32767 到 32767 unsigned short int 0 到 65535 signed short int 和 short int 的一样 long int -2147483647 到 2147483647 signed long int 和 long int 的一样 unsigned long int 0 到 4294967295 float 1E-37 到 1E+37 6 位精度 double 1E-37 到 1E+37 10 位精度 long double 1E-37 到 1E+37 10 位精度

评论(0