
C++
haha and giraffe
一只努力的长颈鹿
展开
-
vector初始化方式
转自:https://blog.youkuaiyun.com/yjunyu/article/details/77728410?locationNum=10&fps=1vector的几种初始化及赋值方式:(1)不带参数的构造函数初始化//初始化一个size为0的vectorvector<int> abc;(2)带参数的构造函数初始化//初始化size,但每个元素值为...转载 2018-10-04 22:29:04 · 132 阅读 · 0 评论 -
c++对象模型解析(一)
本系列记录在学习过程中,我对于c++对象模型的理解,主要包括如下知识点等底层实现机制。c++对象大小计算 虚函数(虚表,虚指针) 构造函数,析构函数(定义,作用,什么时候编译器自动生成) 多重继承,虚继承(菱形继承,优劣处) 动态绑定(多态,静态类型与动态类型)struct 和 class之间关系区别成员变量权限,首先struct中的成员变量默认是私有的,class的成员...原创 2019-07-28 16:20:53 · 238 阅读 · 0 评论 -
C++智能指针循环引用问题
今天遇到一个问题需要记录一下,C++中的RAII机制对于内存泄漏问题有了很大的帮助。当我们在拿到一块堆空间的时候,就应该用智能指针包裹起来,当对象生命周期结束的时候会自动释放申请的内存。 智能指针的类型常用的有三种,shared_ptr,unique_ptr,weak_ptr。三种智能指针各有特点,简单而言,shared_ptr有引用计数,unique_ptr一个对象只能指向一块...原创 2019-04-30 20:41:22 · 422 阅读 · 0 评论 -
C++中的左值与右值
来源 C++中的左值和右值其实是一个很久远的概念,但是逐渐到C++11才被重视起来。如今理解这两个概念对于正确运用C++11的一些特性十分有帮助。 首要要知道这两个名词其实是继承C语言,C语言中是可以简单理解为:左值是赋值语句的左侧,右值则不能。然而在C++中,则不能简单的这么认为,但是可以归纳为:当一个对象被用作右值的时候,用的是对象的值(内容),当对象被用作左值的时候,用的...原创 2019-05-03 12:08:09 · 213 阅读 · 0 评论 -
C++——vector和list简述
vectorvector概述 vector是STL中序列式容器的一种,可以理解为“可变长的数组”。与array的区别:array是静态空间,大小一旦固定就不能改变,vector是动态空间,随着元素的加入,他会有自己的机制来扩充空间以填充元素。vector的迭代器是random access iterator类型。vector小例子#include <vector>...原创 2019-01-21 14:14:29 · 393 阅读 · 0 评论 -
C++——分配器allocator
Allocator简介 分配器(配置器,allocator)是STL中六大组件(容器、算法、迭代器、仿函数、适配器、分配器)之一,用于分配管理内存空间。其实我们可以把allocator看成一个简易的内存池,其主要适用于在使用容器时,对内存空间的动态分配,如果是我们平常要申请一块动态内存时,不推荐使用allocator,应该使用new-delete(malloc-free),主要原因是al...原创 2019-01-15 14:03:39 · 4533 阅读 · 1 评论 -
C++——迭代器Iterator
Iterator简介 迭代器是一个抽象的概念,其可以说是算法与容器之间的桥梁,迭代器提供一种方法,使之能够依存巡防某个聚合物(容器)所含的所有元素,而有无需暴露该聚合物的内部表达方式。 迭代器也可以看成一个行为类似指针的对象,而指针的行为主要就是内容提领(*)和成员访问(->) 根据移动特性和实施操作,迭代器分为五类:Input Iterator:迭代器所指...原创 2019-01-19 14:20:17 · 256 阅读 · 0 评论 -
Effective C++读书笔记
本篇记录一下首次研读Effective C++的知识点和自己的理解,会分条款逐一阐述。条款01:视C++为一个语言联邦 C++有四个次语言,次语言之间相互协调,当你在编写程序的时候,最有可能运用到的就是次语言之间的相互转换,所以可以分开来学习,熟悉了每一块之后再联合起来使用。C:C++任然是以C为基础,区块、语句、预处理器、内置数据类型、数组、指针等都是延续C的传统。 面向对象...原创 2019-01-06 12:05:32 · 159 阅读 · 0 评论 -
基类析构函数与虚函数
基类析构函数为什么要声明为虚函数? 这个问题是C++理解虚函数和动态绑定的一个基础,也是面试常考的一个点。虽然几乎每本书中都会提及这个点,但是很少有把其具体阐明。本文通过具体实例+理论阐述尽量清晰解释这个问题。 首先看一下effective c++中是怎么描述的。 ----摘自《Effective C++》 C++中明白指出,当derived cla...原创 2018-12-18 16:55:58 · 848 阅读 · 0 评论 -
C++侯捷面向对象高级编程笔记
P7 三大函数(big three):拷贝构造,拷贝赋值,析构函数设计一个拥有指针的类String。(1)拷贝构造函数如果没有显示的写出来,编译器会默认给一个。当我们设计的class带有指针,就不能用默认的拷贝构造函数,需要自己定义拷贝构造函数,拷贝赋值操作符,析构函数。(2)拷贝构造函数,首先也是一个构造函数,即函数名和类名相同,没有返回值,与普通的构造函数不同的是,实参为本类对象的...原创 2018-11-23 14:31:20 · 907 阅读 · 0 评论 -
C++ Primer 记录(二)
第三章 字符串、向量和数组这一章主要介绍了string、vector、迭代器和数组,也是较为基础的一章,但是在刷算法题目的时候经常可以用到一些里面的操作,所以一些基本的知识需要熟练运用。(1)标准库类型string表示可变长的字符序列,其初始化的方式有很多种,主要是直接初始化和拷贝初始化。值得一提的是,其可以通过getline(is,s) 从输入流对象is中读取一行赋给s,并返回s,可以保...原创 2018-11-03 22:48:55 · 127 阅读 · 0 评论 -
C++ Primer 记录(一)
这是一本C++的圣经,以前上课的时候没有好好学,现在趁着这个机会好好回顾一下,同时着重掌握C++11的特性,里面很多知识点都是面试必考,应该反复多读理解并记好笔记。第一章 开始这一章比较基础,编者以一个书店程序的例子作为引入,本章着重记录一下几个之前没有注意到的细节。(1)大多数系统中,在主函数main中的返回值被用来指示状态,返回值0表明成功,非0返回值的含义由系统定义,通常用来指出...原创 2018-10-12 16:35:26 · 152 阅读 · 0 评论 -
C++11新特性解析
Table of Contents类型推导智能指针移动语义杂项nullptr、0、NULLconstexpr本篇博客对于C++11的新特性做一些详细的描述和记录。尽量用简洁的语言和小栗子说明C++11做了哪些优化工作。类型推导模板函数类型推导。当调用一个模板函数时候,会自动进行模板参数推导。在推导的过程中,实参的引用性会被忽略(也就是说如果传进的是一个引用...原创 2019-09-17 17:31:14 · 791 阅读 · 0 评论