c++ primer 读书笔记】的更多相关文章

原文链接:https://struts.apache.org/primer.html 本来想写成读书笔记的,结果还是变成翻译,谨作记录,学习.   1.HTML -- 见我前面文章 2.Internet 了解 http 请求和响应的循环 --- 见我前面文章 3.java      Reflection 和 Introspection     反射和内省     内省(IntroSpector)是Java语言对JavaBean 类属性.事件的一种缺省处理方法. 例如类A中有属性name, 那我们…
C++ Primer 第五版课后题 练习6.32 :下面的函数合法吗?如果合法,说明其功能:如果不合法,修改其中的错误并解释原因. #include <iostream> using namespace std; int &get(int *arry, int index) { return arry[index]; } int main() { int ia[10]; for (int i = 0; i != 10; ++i) get(ia, i) = i; return 0; }…
C++ Primer 第二章 变量和基本类型 2.1 基本内置类型 C++定义了一组表示整数.浮点数.单个字符和布尔值的算术类型(arithmetic type),此外还定义了Void类型. 算术类型的存储空间大小(指用了表示该类型的二进制位数)依机器而定,C++标准规定了每个算术类型的最小存储空间.实际上,大部分编译器都使用了更大的存储空间. 表2-1   C++:算术类型 类型 含义 最小存储空间 备注 整型 布尔值 bool 布尔型 -------- 字符型 char 字符型 8位 通常是…
1  带有作用域的枚举 scoped-enumeration 相信大家都用过枚举量,都是不带有作用域的,在头文件中定义需要特别注意不要出现重名的情况.为了解决这种问题,c++11提供了带作用于的枚举.可以使用class EnumName定义,示例代码如下: enum {ZERO, ONE, TWO}; enum class color {RED, BLUE, GREEN}; 上面的是没有作用域的枚举定义形式,下面是带有作用域的枚举定义形式,调用带有作用域的枚举必须指定作用域,否则会编译出错. 还…
1 =default构造函数限定符 c++11针对构造函数提供了=default限定符,可以用于显式指定编译器自动生成特定的构造函数.析构或赋值运算函数.参考代码如下: class CtorDftType { public: CtorDftType()=default; CtorDftType(const CtorDftType&)=default; CtorDftType & operator = (const CtorDftType &)=default; ~CtorDftTy…
1 新的STL模板类型,std::initializer_list<T> c++11添加了initializer_list模板类型,用于提供参数是同类型情况的可变长度的参数传递机制,头文件是<initializer_list>. 其具体接口可参考cplusplus.com的介绍,地址如下:http://www.cplusplus.com/reference/initializer_list/initializer_list/?kw=initializer_list 与vector不…
1 新的关键词nullptr c++11引入新的关键词nullptr,用于表示空指针,用于替换之前c提供的NULL(最初NULL是定义在stdlib中的宏定义,通常是0). 2 新的别名定义机制 alias declaration c++提供了使用typedef定义的别名机制,但是有时候很难理解.为了更好的使用别名机制,c++11提供了新的别名定义机制,类似代码如下: // alias declarations using VInt = int; // type alias using PInt…
以前阅读学习C++ Primer时的习题代码(当时代码风格格式比较渣): https://github.com/liyuan989/exercise/tree/master/c%2B%2B%20primer%2C%204th%20Edition (完)…
顺序容器:为程序提供控制元素存储和访问顺序的能力,这种顺序与元素加入到容器时的位置相对应,而与元素值无关. 另外还有根据关键字的值来存储元素的容器:有序.无序关联容器. 另外STL还有三种容器适配器,用来与容器类型适配. 顺序容器包括 vector 可变大小数组 deque 双端队列,支持随机访问,在front/back插入.删除速度很快 list 双向链表,只支持顺序访问,在任何位置插入元素很快 forward_list 单向链表,只支持单向顺序访问 array 固定大小数组,支持随机访问,不…
string string是标准库类型,使用时需要包涵头文件,使用using声明. include <string> using std::string; 1.定义和初始化 string s1; string s2(s1); string s2 = s1; string s3("value"); string s3 = "value"; string s4(n, 'c');//把s4初始化为连续n个字符c组成的串 2.操作 getline(is, s);…
第七章 类 练习7.32  定义你自己的Screen和Window_mgr,其中clear是Window_mgr的成员,是Screen的友元. 由于Window_mgr中含有Screen对象,所以在Window_mgr之前要声明Screen. 因为clear中调用Screen成员,所以Screen要在clear定义之前定义. 因为Screen类中要声明友元函数clear,而clear是Window_mgr的成员函数,所以在Screen之前要定义Window_mgr. 好乱啊啊啊啊 代码: #in…
除第二章介绍的是C++的基本类型,本章将大致介绍一下C++定义的内容丰富的抽象数据库类型标准库.着重介绍一下sting.vector和bitset. 3.2标准库string类型 1.string类型支持几个构造函数.构造函数是一个特殊成员函数,定义如何初始化该类型的对象,以下是string类型常用的构造函数.当没有明确指定对象初始化式时,系统将调用默认构造函数 几种初始化string对象的凡是 string s1 默认构造函数,s1为空串 string s2(s1) 将s2初始化为s1的一个副…
第11章 泛型算法 1.概述 泛型算法依赖于迭代器,而不是依赖容器,需要指定作用的区间,即[开始,结束),表示的区间,如上所示 此外还需要元素是可比的,如果元素本身是不可比的,那么可以自己定义比较函数. 2.常用的泛型算法函数: fill,fill_n, copy, replace, sort, unique, count_if, stable_sort 此外在有一个谓词函数会结合以上的函数使用,像sort, count_if等 3.再谈迭代器 (1)插入迭代器 back_inserter, f…
第10章 关联容器 引: map set multimap multiset 1.pair类型 pair<string, int> anon anon.first, anon.second anon = make_pair(first, last) 2.关联容器 3.map类型 map<string, int> word_count; map<K, V>::key_type map<K, V>::mapped_type map<K, V>::va…
第9章 顺序容器 引: 顺序容器: vector 支持快速随机访问 list 支持快速插入/删除 deque 双端队列 顺序容器适配器: stack 后进先出栈 queue 先进先出队列 priority_queue 有优先级管理的队列 1. 容器元素的初始化 C<T> c; //empty C c(c2); //副本 C c(b, e); //迭代器 C c(n, t); //n个相同元素 // 以下只适用于顺序容器 C c(n); 2. 容器内元素的类型约束 (1)元素必须支持赋值运算 (…
第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中的string对象.在fstream和sstream里定义的美中类型都是从iostream头文件中定义的相关类型派生而来. 2. 流对象不能复制,因此不能存储在vector容器中 3. 形参或返回类型也不能为流类型.如果需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用.…
1.1 编写简单的C++程序 每个C++程序都必须包含一个main函数,因为main函数是系统执行入口,且main函数是唯一被系统显示调用的函数. 定义函数必须指定4个元素:返回类型.函数名.形参表.函数体. main函数的形参个数是有限的. 返回值类型必须和函数的返回类型相同,或者可以转换为函数的返回类型. 1.2 偷窥输入输出 iostream库的基础是istream(输入流)和ostream(输出流)的类型. 流:指从某种IO设备上读入或写出的字符序列. 1.2.1  标准输入与输出对象…
有时指定自己的类类型来表示某些类型的数据,如SmallInt,然后在为了便于计算将指定一个转换算,类类型,在某些情况下,自己主动转换为指定的类型 <1>转换操作符 operator type(); 转换功能必须是一个类的成员函数,你不能指定返回类型.形參列表必须为空,而且通常不应该改变转换对象.所以操作符通常定义为const成员. #include <iostream> using namespace std; class SmallInt { public: SmallInt(i…
指针和引用 引用本身不是一个对象,因此不能定义引用的指针:而指针是一个对象,因此可以定义指针的引用. 此外,要理解一个复合类型的变量到底是什么类型,最简单的办法是从右向左阅读其定义,离变量名最近的符号对变量的类型有最直接的影响. Const限定符       对const变量,如果想在多个文件中共享,可在声名和定义中添加关键字extern. 常量的引用也必须是常量. 指向常量的指针或引用,仅仅要求不能通过指针引用去改变对象的值,而没有规定那个对象的值不能通过其他途径改变. 关于常量的指针和指针的…
vector: 本科时学C++的时候没学过vector,正好补一下. 第一个要注意的地方是要正确区分列表初始值还是元素数量. 第二点是不能使用范围for向vector对象添加元素,范围for语句体内不应改变其所遍历序列的大小. 不能用下标形式给vector添加元素 迭代器         数组:理解数组声名的顺序:从数组名字开始按照由内向外,从右向左的顺序阅读. 数组的大小要定义为一个常量. 数组的内置的下标运算符所用的索引值不是无符号类型,这一点与vector和string不一样. 要使用范置…
getline(cin,string s)可以读取一整行,包括空白符.使用ctrl+Z结束 字符串字面值与string是不同的类型.两个字符串字面值不能直接相加. 处理string对象中的字符时,C++定义了很多库函数,可方便使用. 如果想要处理每一个字符,可使用范围for语句: for(declarationg:expression),如果想改变expression中的值,可把declaration定义成引用类型. string::size_type n;cin>>n;n<s.size…
1. 主要内容 介绍程序语言的核心思想和C++的基本概念. 印象比较深刻的就是分而治之(divide and conque)的分解思想. 2. 知识广场 1) C++ 文件后缀 cc, cpp,,cxx 2) 编译器功能 一,检查错误(语法错误,类型错误): 二,代码生成(生成目标代码或者汇编指令) 3)内置类型的隐式转换 int 截取 4)#include指示符读入指定文件的内容. <>表示工程或标准头文件.从环境变量路径查找. “”表示用户提供头文件.从当前目录查找. 嵌套的头文件引入,促…
多态也是C++中的一个重要的方面.多态和动态类型,虚函数本质上是指同样的事情. 1 虚函数 类中的成员函数原型前面加上virtual 表面这个函数是个虚函数.虚函数的目的是为了在继承它的派生类中又一次定义这个函数,以便于通过基类的指针或引用在执行时对派生类的函数进行调用. 2 派生类和虚函数 派生类普通情况下要重定义所继承的虚函数.有几个注意事项. <1>虚函数的声明必须和基类中的函数声明原型全然一致.例外的是当基类返回基类型的指针或者引用的时候.派生类能够派生类类型的指针或者引用 <2…
<3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇只涉及两章,但容量已足够喝一壶了. 第8章 矩阵和线性变换 变换物体和变换坐标系是等价的,将物体变换一个量等价于将坐标系变换一个相反的量. 旋转rotation 2D中的旋转只有一个参数:角度θ,逆时针经常被认为是正方向. 在3D场景中,绕轴旋转而不是点.绕轴旋转θ°时,必须知道哪个方向被认为是正方向.在左手…
<3D Math Primer for Graphics and Game Development>读书笔记1 本文是<3D Math Primer for Graphics and Game Development>第一版的读书笔记.第二版貌似还没有中文版. 本书网站gamemath.com.中文版居然给了翻译公司的网址,而且里面还什么有用的都没有,囧. 第2章 笛卡尔坐标系统 左手坐标系的记忆方法 伸出左手,手指依次是())))))Z轴.他们分别对应起来,用左手摆成下图的样子(…
注:本系列读书笔记是博主写作于两三年前的,所以是基于<C++ Primer>第四版的,目前该书已更新至第五版,第五版是基于C++11标准的,貌似更新挺多的.博主今年应届硕士毕业,如若过阵子能如愿找到一份Linux C/C++方面的工作,我会重读第五版,并对该系列读书笔记进行更新.另外,使用的作图工具是Minjet MindManager 2014. 第3章-标准库类型 第4章-数组和指针 第5章-表达式 第6章-语句 第7章-函数 第8章-标准IO库 第9章-顺序容器 第10章-关联容器 第1…
Primer C++第五版 读书笔记(一) (如有侵权请通知本人,将第一时间删文) 1.1-2.2 章节 关于C++变量初始化: 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,以一个新值来替代. 定义一个名为a的int变量并初始化为0,有以下4种方法: int a = 0; int a = {0}; // 列表初始化 int a{0}; // 列表初始化 int a(0); 当列表初始化方法用于内置类型的变量时,如果初始值存在信息丢失的风险,则编译器…
读书笔记之:C++ Primer (第4版)及习题(ch12-ch18) [++++] 第12章 类 1. 类的声明与定义:前向声明,不完全类型 2. 从const函数返回*this 3. 可变数据成员mutable 4. 用于const对象的构造函数:构造函数不能声明为const 5. 构造函数初始化式 构造函数的执行分为两个阶段:初始化阶段和普通的计算阶段 6. 构造函数初始化列表 7. 默认实参与构造函数 8. 类通常定义一个默认构造函数,不然的话使用起来会很麻烦. 9. 使用默认构造函数…
读书笔记之:C++ Primer (第4版)及习题(ch01-ch11) [++++] 第2章 数据和基本类型 1. 整型 2. 习题:左值和右值 3. C++关键字/保留字和操作符替代值 4. 声明,定义, 初始化和赋值是不同的概念. 声明是说明一个变量的存在,不会为变量进行内存空间的分配. 定义是说明一个变量的存在,同时为这个变量分配对应的内存空间. 初始化就是在进行变量定义的时候在所分配的内存空间中同时填入有意义的值.如果不进行初始化的话,变量虽然有对应的内存空间,但是内存空间中对应 的内…
读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以前不懂或不清楚的C++知识的一个记录,也希望和一起初读<C++ Primer>的朋友们一起成长. 新手笔记,大牛请无视. 1.cin和cout分别是istream和ostream的一个对象,定义在std中,另外,cin和cout是有返回值的返回值是这个istream或ostream对象(应该是引用…