
C++ Primer 学习笔记
文章平均质量分 56
黑夜code
黑夜给了我黑色的眼睛,我却用它来寻找光明
展开
-
C++中assert的用法
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression ); C++ assert()函数的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:转载 2014-05-07 14:20:58 · 770 阅读 · 0 评论 -
c++ primer 学习笔记22类的构造函数
构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。构造函数的工作是保证每个对象的数据成员具有合适的初始值。class Sales_item { public: // operations on Sales_itemobjects // default constructor needed to initialize原创 2016-04-25 15:15:37 · 510 阅读 · 1 评论 -
c++ primer 学习笔记23 友元 static类成员
友元机制允许一个类将对其非公有成员的访问权授予指定的函数或类。友元的声明以关键字 friend 开始。它只能出现在类定义的内部。友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所以它们不受声明出现部分的访问控制影响。 通常,将友元声明成组地放在类定义的开始或结尾是个好主意。 友元可以是普通的非成员函数,或前面定义的其他类的成员函数,或整个类。将一个类设为友元,友元类的原创 2016-04-26 16:04:28 · 503 阅读 · 1 评论 -
c++ primer 学习笔记21类的定义和声明、隐含的this指针、类作用域
类的定义和声明 在 public 部分定义的成员可被使用该类型的所有代码访问;在 private 部分定义的成员可被其他类成员访问。构造函数 创建一个类类型的对象时,编译器会自动使用一个构造函数来初始化该对象。构造函数是一个特殊的、与类同名的成员函数,用于给每个数据成员设置适当的初始值。Sales_item(): units_sold(0), revenue(0.0) { }原创 2016-04-25 09:49:04 · 401 阅读 · 0 评论 -
c++ primer 学习笔记24 复制构造函数
复制构造函数是一种特殊构造函数,具有单个形参,该形参(常用 const 修饰)是对该类类型的引用。当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用复制构造函数。当将该类型的对象传递给函数或函数返回该类型的对象时,将隐式使用复制构造函数。 析构函数是构造函数的互补:当对象超出作用域或动态分配的对象被删除时,将自动应用析构函数。析构函数可用于释放对象时构造或在对象的生命期中所获取的资源原创 2016-04-27 09:49:19 · 484 阅读 · 0 评论 -
c++ primer 学习笔记18 关联容器
关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。关联容器(Associative containers)支持通过键来高效地查找和读取元素。两个基本的关联容器类型是 map 和set。map 的元素以键-值(key-value)对的形式组织:键用作元素在 map 中的索引,而值则表示所存储和读取的数据。set仅包含一原创 2016-01-04 09:13:32 · 764 阅读 · 0 评论 -
c++ primer 学习笔记19 map容器
10.3.2.map 定义的类型map 接口的value_type 是 pair 类型,它的值成员可以修改,但键成员不能修改。map 迭代器进行解引用将产生 pair类型的对象 对迭代器进行解引用时,将获得一个引用,指向容器中一个 value_type 类型的值。对于 map 容器,其 value_type 是 pair 类型。10.3.4.使用下标访问 map 对象原创 2016-01-06 10:47:34 · 589 阅读 · 0 评论 -
c++ primer 学习笔记20 泛型算法 迭代器
使用泛型算法必须包含 algorithm 头文件: #include 标准库还定义了一组泛化的算术算法(generalizednumeric algorithm),其命名习惯与泛型算法相同。使用这些算法则必须包含 numeric 头文件: #include 除了少数例外情况,所有算法都在一段范围内的元素上操作,我们将这段范围称为“输出范围(input range)原创 2016-01-13 09:45:46 · 699 阅读 · 0 评论 -
c++ primer 学习笔记25 面向对象编程
面向对象编程基于三个基本概念:数据抽象、继承和动态绑定。继承派生类(derived class)能够继承基类(base class)定义的成员,除了从基类继承的成员之外,派生类还可以定义更多的成员。在 C++ 中,基类必须指出希望派生类重写哪些函数,定义为 virtual 的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数。 在 C++ 中,通过基类原创 2016-05-05 15:52:15 · 366 阅读 · 0 评论 -
c++ Primer学习笔记1
编写简单的c++程序原创 2014-08-27 13:41:52 · 551 阅读 · 0 评论 -
c++ Primer学习笔记2
while语句while语句提供了迭代功能x原创 2014-08-27 15:11:21 · 699 阅读 · 0 评论 -
C++ Primer学习笔记8 数组和指针
C++提供了两种类似于vector和迭代器的低级复合操作--数组和指针。与vector类似,数组也可以保存某种类型的一组对象;而它们的区别在于,数组的长度是固定的。数组一经创建,就不允许添加新的元素。指针则可以像迭代器一样用于遍历和检查数组中的元素。C++中尽量使用vector和迭代器,而避免使用低级的数组和指针。原创 2014-10-08 20:34:18 · 626 阅读 · 0 评论 -
C++ Primer 学习笔记9 表达式 (求余、自增和自减操作符、箭头操作符、条件表达式、sizeof操作符、逗号操作符)
操作符%称为“求余”或“求模”,用于计算原创 2014-10-08 22:42:55 · 682 阅读 · 0 评论 -
C++ Primer 学习笔记12 函数(return语句、函数声明、局部对象、内联函数、类的成员函数、重载函数)
1、return语句1、没有返回值的函数 在返回值类型为void的函数中,return返回语句不是必需的,隐式的return发生在函数的最后一个语句完成时。 一般情况下,返回类型是void的函数使用return语句是为了引起函数的强制结束,这种return的用法类似于循环结构中的break语句的作用。void do_swap(int &v1,int &v原创 2014-12-08 10:17:41 · 1023 阅读 · 0 评论 -
C++ Primer 学习笔记17 容器适配器
除了顺序容器,标准库还提供了三种顺序容器适配器:queue、priority_queue 和 stack。适配器(adaptor)是标准库中通用的概念,包括容器适配器、迭代器适配器和函数适配器。本质上,适配器是使一事物的行为类似于另一事物的行为的一种机制。容器适配器让一种已存在的容器类型采用另一种不同的抽象类型的工作方式实现。使用适配器时,必须包含相关的头文件: #i原创 2015-12-22 11:47:33 · 481 阅读 · 0 评论 -
C++ Primer 学习笔记16 string字符串
9.6. 再谈 string 类型 表 9.12 第 3.2 节介绍的 string 操作除了已经使用过的操作外,string 类型还支持大多数顺序容器操作。在某些方面,可将 string 类型视为字符容器。除了一些特殊操作,string 类型提供与 vector 容器相同的操作。string 类型与 vector 容器不同的是,它不支持以栈方式操纵容器:在 string原创 2015-12-22 11:02:53 · 651 阅读 · 0 评论 -
C++ Primer 学习笔记15 容器的选择
为了支持快速的随机访问,vector容器的元素以连续的方式存放——每一个元素都紧挨着前一个元素存储。为了使 vector 容器实现快速的内存分配,其实际分配的容量要比当前所需的空间多一些。vector 容器预留了这些额外的存储区,用于存放新添加的元素。vector 类提供了两个成员函数:capacity 和 reserve 使程序员可与 vector 容器内存分配的实现部分交互工作。cap原创 2015-12-21 16:01:15 · 557 阅读 · 0 评论 -
c++小问题系列1
1、字符串输入时,cin>>出现问题 IntelliSense: 没有与这些操作数匹配的 ">>" 运算符 添加#include 即可2、控制台程序,结果一闪而过,只需要在返回前添加 system("pause");原创 2014-03-01 15:23:08 · 672 阅读 · 0 评论 -
字符串中小写字母转换为大写
void covupper(string s){char c;for(size_t i=0;i{c=s[i];if(c>97&&cc-=32;cout}}原创 2014-06-05 10:29:18 · 2437 阅读 · 0 评论 -
c++数据类型所占字节书 sizeof的用法
bool 1个字节char 1个字节原创 2014-06-05 13:38:50 · 750 阅读 · 0 评论 -
MFC中按下enter键程序结束问题
点击确定键,然后注释掉onok原创 2014-06-06 10:26:45 · 942 阅读 · 0 评论 -
MFC中播放声音
#include "mmsystem.h" //#pragma comment(lib,"Winmm.lib")原创 2014-06-06 15:43:39 · 603 阅读 · 0 评论 -
Mfc中设置按钮不可用
MFC C++ 中 按钮属性中disabled 的属性设为True可用将按钮设置为不可用,那么程序中如何设置呢?easy喽~~添加按钮ID_BTN_EDIT 的成员变量 m_btnedit,按钮不可用(变灰) m_btnedit. EnableWindow (0);按钮可用 m_btnedit. EnableWi转载 2014-06-06 14:21:20 · 16050 阅读 · 1 评论 -
C++ Primer 学习笔记3 a变量和基本类型
算术类型的存储空间依据机器而定原创 2014-08-27 17:36:16 · 616 阅读 · 0 评论 -
C++ Primer 学习笔记4 变量和基本类型 (变量初始化规则、声明和定义)
当定义没有初始化的变量时,原创 2014-09-26 18:52:55 · 676 阅读 · 0 评论 -
C++ Primer学习笔记6 标准库类型(命名空间的using声明、标准库string类型)
1、命名空间的using声明std::cin 中用到了::操作符,该操作符为作用域操作符。它的含义是右操作数的名字可以在左操作数的作用域中找到。std::cin 的意思是cin在命名空间std中定义。原创 2014-10-08 19:19:40 · 581 阅读 · 0 评论 -
C++ Primer学习笔记5 变量和基本类型(const限定符、引用、typedef名字、枚举)
1、const限定符定义一个变量代表某一个常数存在严重的问题,变量可以被修改,如果用const限定符可以解决此问题,把一个对象转换为常量。const int bufSize = 512;因常量在定以后不可以修改,所以在定义时必须初始化。const string hi=”hello”const对象默认为文件的局部变量。原创 2014-10-08 19:04:09 · 890 阅读 · 0 评论 -
C++ Primer学习笔记7 标准库类型(标准库vector类型、迭代器简介)
1、标准库vector类型vector是同一种类型的对象的集合,称为容器,一个容器中的所有对象必须是同一种类型。使用vector之前,必须包含相应的头文件。原创 2014-10-08 19:35:00 · 533 阅读 · 0 评论 -
C++ Primer 学习笔记10 语句 (空语句、if语句、switch语句、for语句、dowhile语句、break语句、goto语句、continue语句、try块和异常处理)
空语句用于语法上需要一个语句,而逻辑上并不需要的位置,此时需要一个空语句,原创 2014-10-16 12:09:01 · 1657 阅读 · 0 评论 -
C++ Primer 学习笔记11 函数(函数调用、引用形参、非引用形参)
函数的定义int gcd(int v1,int v2){ while (v2) { int temp = v2; v2 = v1 % v2; v1 = temp; } return v1;}原创 2014-10-16 12:38:23 · 691 阅读 · 0 评论 -
C++ Primer 学习笔记14 顺序容器
6、访问元素 如果容器非空,那么容器类型的front和back成员将返回容器的第一个和最后一个元素的引用。【与begin和end的对比:】 1)begin和end返回容器类型的迭代器,而不是引用; 2)end返回容器最后一个元素的下一个位置的迭代器,而back返回容器的最后一个元素的引用! /* *必须保证该list容器非空! *如果容转载 2014-12-09 17:19:34 · 640 阅读 · 0 评论 -
C++ Primer 学习笔记13 顺序容器
顺序容器内的元素按其位置存储和访问。顺序容器的元素排列次序与元素值无关转载 2014-12-09 10:09:13 · 680 阅读 · 0 评论