###学习《C++ Primer》- 4】的更多相关文章

<C++ Primer>这本书可以说是公认的学习C++最好的书,但我觉得不是特别适合作为教材,书中内容的顺序让人有些蛋疼.我个人认为初学此书是不能跳着看的.如果急于上手的话,我更推荐<C++程序设计>. 首先是第一章,第一章可以说是本书第一部分的一个简略的概括.对于有其他编程语言经验的读者来说,看完这章基本可以看出C++的基本语法与其他语言的差异.对于零基础的读者,可以跟着书中内容写一些小程序了. 本主要介绍了以下几点: 1.一个最简单的C++程序是什么样的. 2.初步了解输入流和…
这一章介绍顺序容器,在之前的第三章中,了解到的vector就属于顺序容器的一种. 一个容器就是一些特定类型对象的集合. 除了vector,还有哪些顺序容器? vector: 大小可变,随机访问的速度很快,但是在尾部之外的部分插入或删除元素可能会很慢. deque : 随机访问的速度很快,在头和尾插入或删除的速度都很快. list: 双向链表,只支持双向顺序访问,在任何位置插入或删除操作都很快(链表的特性) forward_list: 单向链表,只支持单向的随机访问.在任何位置插入或删除都很快 a…
第三章,主要内容是字符串和数组.感觉作者的意图是希望读者可以早一点可以写出简单的小程序,并且可以早点接触迭代器这种思想. 在我看来,这种内容的难度并不大. 对于编程来说,最重要的应该是思想,类似vector的各种操作,读者仅仅只需要知道vector可以做这些操作,真正用到的时候,能够想起来,再去查就好了. 在看<UNIX环境高级编程>的时候,各种系统调用,不可能每一个都记得熟,所以我认为这种只需要知道“可以这么做“就行了,用到的时候再查,久而久之自然就熟悉了. 然而关键的是为什么,比如为什么要…
本身就一定基础的读者我想变量常量这些概念应该已经不是问题了.但是本章还是有几个重点,需要特别留意一下的: 1.初始化和赋值是不同的操作 2.任何非0值都是true 3.使用新标准列表初始化,在有丢失精度的可能时,会报错. 4.引用一旦绑定对象就不可再绑定到其他对象,因此也必须初始化 5.const引用初始化时可以赋予字面常量值,只要可以转换为相应的类型 6.顶层const意味着指针本身是个常量,底层const意味着指针所指向的对象是常量 7.声明成constexpr的变量是一个常量. 到了第二章…
1.操作符重载 重载操作符的几个限制: a)         重载的至少有一个操作数是用户定义的类型,这将防止用户为标准类型重载操作符. b)         不能违反操作符原有来的句法规则. c)         不能定义新的操作符.另外有一些操作符是不可以重载的,这里不列举. 2.友元函数 创建友元函数: 在类声明中加 friend 声明,在定义中不加friend,类的方法定义时加类名和限定符Time::,友元函数的定义则没有: //类声明中: friend Time operator* (…
1.类的声明和定义 类的声明和定义. 类声明的格式如下: class className { private://private 是类对象的默认访问控制,因此,可以省略 data member delarations//类的私有数据成员名中使用m_开头是个不错的习惯 public: member function prototypes } 定义成员函数时,使用作用域解析符来标识其所属的类: className::functionName()是函数的限定名(qualified name); 而fu…
1. 内联函数 普通函数调用: 存储调用指令的地址->将函数参数复制到堆栈->跳到函数地址执行代码(返回值放到寄存器)->跳回调用指令处 2.  当代码执行时间很短,且会被大量调用的时候,使用内联函数将节省调用的时间. 3.  定义方法: 省略原型,并将整个定义放在本应该放原型的地方,书写的时候尽量将整个函数放到一行中,如果函数占多行就不太合适作为内联函数. inline double square( double x) { return x * x; } 4.  内联函数不能递归调用.…
C++的返回值类型不能是数组 函数原型中的变量名相当于点位符,因此不要求提供变量名. void cheers(int); C++中不指定参数列表时就使用活力号: void saybye(...); 通常,仅当与接受可变参数的C函数(如printf())交互时才需要这样做. 静态类型检查:在编译阶段进行的原型化. 函数调用时将参量(实参)传递给参数(形参,函数定义中 用于接收参数而声明的变量). cin>>输入时跳过前面的空格和换行符. 当且仅当用于函数头或函数原型中时,int arr[] 和…
||. &&操作符是一个顺序点 < 操作符从左向右结合 ; < age < )//17<age为true, = 1,肯定 < 27.所以为整个条件为true { ... } C++ 对逻辑表达式从左向右计算,并在知道答案后立即停止计算. 字符函数库: 在ctype函数库中(#include(cctype)) isalnum() 字母数字 isalpha() 字母 isblank() 空格或水平制表符 isdijit() 数字 islower() 小写字母 is…
C++将赋值表达式的值定义为左侧成员的值 赋值操作符是自右向左结合的 cout.setf(ios:: boolalpha);//调用设置标记,命令cout输出true或false,而非1或0. 任何表达式加上分号都会成为语句,但反过来不一定成立: int n; 顺序点:程序执行过程中的一个点,在这里,在进行下一步之前将确保对所有的副作用进行了评估. 完整表达式:不是另一个表达式的子表达式(没有任何表达式是它的父表达式).比如下面的整个表达式是一个表达式,其中的两个子表达式都不是完整表达式: y…