Loading

随笔分类 -  《C++ Primer》

摘要:12.1.1 shared_ptr #include<memory>头文件 使用动态内存的原因是允许多个对象共享相同的状态。负责自动释放所指向的对象,允许多个指针指向同一个对象。 shared_ptr<string>p1; //指向string的share_ptr指针 shared_ptr<list 阅读全文
posted @ 2019-11-15 16:41 三只猫- 阅读(366) 评论(0) 推荐(0)
摘要:关联容器 两个主要的关联容器是map和set. map中的元素是一些key-value对。 set中每个元素只包含一个关键字。 三个维度划分8个关联容器: 或者是一个set,或者是一个map 或者要求不重复关键字,或者要求允许重复关键字 按顺序保存,无序保存 11.1 使用关联容器 map类型常称为 阅读全文
posted @ 2019-11-15 15:08 三只猫- 阅读(195) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2019-11-04 08:35 三只猫- 阅读(2) 评论(0) 推荐(0)
摘要:一、variadic Templates(参数不定的模板参数) 第一次体会到泛型编程的巨大威力:震撼!! 传入多个参量,然后不断的调用,当print()只有一个参数时,根据函数重载就会调用上面的那个print。 使用sizeof...(args)得到参数的个数。 另外使用多参数模板可以很方便的完成r 阅读全文
posted @ 2019-09-25 14:42 三只猫-
摘要:一、模板与泛型编程的不同之处: OOP能处理类型在程序之前都未知的情况;而在泛型编程中,在编译时就能获知类型了。 C++语言联邦包括四大部分:C、Object-Oriented C++、Template C++、STL;由此可见泛型编程是非常重要的一部分,应当重点对待;当我们编写一个泛型程序时,是独 阅读全文
posted @ 2019-09-25 09:18 三只猫- 阅读(620) 评论(0) 推荐(0)
摘要:函数类型由它的返回类型与形参类型共同决定: 1 //比较两个string对象的长度 2 bool lengthCompare(const string&,const string &); 上述函数的类型是:bool (const string &,const string &),如果想声明一个指向该 阅读全文
posted @ 2019-08-25 16:25 三只猫- 阅读(165) 评论(0) 推荐(0)
摘要:重载的运算符是具有特殊名字的函数:他们的名字是由关键字operator和其后定义的运算符号共同组成。重载运算符也包含返回类型、参数列表和函数体。 重载运算符的参数数量与该运算符作用的运算对象数量一样多。一元运算符有一个参数、二元运算符有两个参数。对于二元运算符来说,左侧对象传递给第一个参数,而右侧对 阅读全文
posted @ 2019-08-24 10:57 三只猫- 阅读(333) 评论(0) 推荐(0)
摘要:一、const介绍: const对象一旦被创建其值就不能再改变,所以const对象必须初始化。任何试图对const赋值的行为都会引发错误。 二、初始化和const: 对const对象的主要限制就是只能在const类型的对象上执行不改变其内容的操作。 int i = 42; const int ci 阅读全文
posted @ 2019-08-19 09:49 三只猫- 阅读(279) 评论(0) 推荐(0)
摘要:——————面向对象程序设计的核心思想是:数据抽象、继承和动态绑定。 15.1 OOP概述 面向对象程序设计的核心思想是数据抽象、继承、和动态绑定。 使用数据抽象,我们可以将类的接口与实现分离;使用继承可以定义相似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的 阅读全文
posted @ 2019-08-17 15:37 三只猫- 阅读(372) 评论(0) 推荐(0)
摘要:一、类的简介: 类的基本思想是抽象数据(data abstraction)和封装(encapsulation).数据抽象是依赖于接口(interface)和实现(implementation)分离的编程范式。类的接口包括所有用户能执行的操作,类的实现包括类的数据成员、负责接口实现的函数体以及定义类所 阅读全文
posted @ 2019-08-16 11:14 三只猫- 阅读(819) 评论(0) 推荐(0)
摘要:一、常量表达式:是指值不会改变并且在编译过程就能得到计算结果的表达式。一个对象是不是常量表达式是由它的数据类型和初始值共同决定。 二、constexpr变量 将变量声明成为constexpr类型,声明为constexpr类型的变量一定是一个常量,且必须使用常量表达式初始化。 三、constexpr函 阅读全文
posted @ 2019-08-15 14:51 三只猫- 阅读(1703) 评论(0) 推荐(2)
摘要:标准库并未给每个容器都添加大量功能,而是提供了一组标准算法,这些算法中的大多数都独立于任何特定的容器。这些算法是通用的(generic 或称为泛型的):它们可以用于不同类型的容器和不同类型的元素。 泛型算法(generic algorithm)之所以称为算法,是因为它们实现了一些经典算法的公共接口, 阅读全文
posted @ 2019-08-15 14:50 三只猫- 阅读(199) 评论(0) 推荐(0)
摘要:一、内存分配方式 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。堆:malloc在堆上分 阅读全文
posted @ 2019-08-15 14:49 三只猫- 阅读(1312) 评论(0) 推荐(0)
摘要:C++/C程序中,数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字符串为 阅读全文
posted @ 2019-08-15 14:49 三只猫- 阅读(316) 评论(0) 推荐(0)
摘要:拷贝控制操作包括拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符、和析构函数。 一、先介绍自定义拷贝构造函数: 1 1 //拷贝构造函数:如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值 2 2 class Foo{ 3 3 public: 4 4 Foo(); / 阅读全文
posted @ 2019-08-15 14:38 三只猫- 阅读(349) 评论(0) 推荐(0)
摘要:多重继承(multiple inheritance)是指从多个直接基类中产生派生类的能力。多重继承的派生类继承了所有父类的属性。 一、多重继承例子: 1 class Bear : public ZooAnimal {}; 2 class Panda: public Bear, public Enda 阅读全文
posted @ 2019-08-15 14:38 三只猫- 阅读(167) 评论(0) 推荐(0)