C / C++
文章平均质量分 99
Tattoo_Welkin
Just do it !!!
展开
-
C++中的一些基础概念及解析(含构造函数与析构函数)
1.容器容器用来存储数据的,数据可以是用户自定义类型(对象),也可以是预定义类型。一般用的就有(vector,list,deque)那么有什么好处呐?参考这篇博客:博客2.函数重载什么是函数重载?(what)在同一作用域内,函数名相同但参数不同的一组函数。这组函数被称为重载函数。为什么需要它?(why)重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的原创 2017-11-10 21:50:09 · 256 阅读 · 0 评论 -
C++ primer之拷贝控制示例
首先解释一下什么是拷贝控制 ?其实就是拷贝构造函数、赋值操作符和析构函数这三种函数 . 那么如何编写这三个函数就叫做拷贝控制了.1.整体需求 :总共设计两个类:1.一个是Message,代表电子邮件消息(或者其它)2.一个是Folder ,代表消息目录 用生活中最一般的想法去思考,每一个消息目录中可以有许多消息(也可以有相同消息) , 每一条消息也可以出现在多个目...原创 2018-04-18 21:23:13 · 222 阅读 · 0 评论 -
C++ primer之动态内存管理实例
这个我是感觉在思路上没有那么复杂啦,参考书上的提示应该能够自己写出来,就直接上代码了#include<iostream>#include<memory>#include<utility>#include<string>#include<algorithm>//Equivalent to " vector<string> "class StrVec{ public: StrVe原创 2018-04-19 19:17:33 · 238 阅读 · 0 评论 -
C++小点之四种强制类型转换
提问:1.为什么要搞出四种,用原先使用的那种不可以吗?答:因为强制类型转换时是具有一定的风险的,这种风险包括(精度的损失 ,派生类与基类的一些转换关系) 而且根据风险程度的不同导致的 bug 也会不同 ,再加上存在许多种类型之间的转换 , 所以C++选择将其分为四种 。2.这样分类之后又有什么好处呐?答:关于这个问题,让我们来设想一个场景。假如你现在知道你的bug 是因为指针类型之间的转换原创 2018-05-10 15:47:29 · 209 阅读 · 0 评论 -
C++小点之可调用类型声明std::function<...>
在C++11中,callable object 包括传统C函数,C++成员函数,函数对象(实现了()运算符的类的实例),lambda表达式(特殊函数对象)共4种。程序设计,特别是程序库设计时,经常需要涉及到回调,如果针对每种不同的callable object单独进行声明类型,代码将会非常散乱,也不灵活。如下示例:#include <iostream>#include <functional>u转载 2018-05-10 13:33:39 · 703 阅读 · 0 评论 -
C++小点之范型算法自定义比较函数的五种方法
零:使用STL自带的函数(less与greater) vector&amp;amp;amp;amp;amp;lt;int&amp;amp;amp;amp;amp;gt; v{45,2,5,8454,34,68421,5,84,1,5}; sort(v.begin() ,v.end(),less&amp;amp;amp;amp;amp;lt;int&amp;amp;amp;amp;amp;gt;());//从小到大原创 2018-05-24 18:05:04 · 951 阅读 · 0 评论 -
C++ 之实现自己的 unique_ptr
1. 几个基本成员函数的作用:u.reset() 释放u指向的对象u.reset(q) 如果提供了内置指针q,就令u指向这个对象 u.reset(nullptr) 将 u 置为空u.release() u 放弃对指针的控制权,返回指针,并将 u 置为空2. 一些规则:某个时刻只能有一个unique_ptr 指向一个给定的对象。当它销毁时,它所指向的对象也会被销毁。...原创 2018-06-13 00:10:08 · 3870 阅读 · 8 评论 -
C++ 之实现自己的 shared_ptr
/*shared_ptr.h 文件*//********************************************************* &amp;gt; File Name: shared_ptr.h &amp;gt; Author: Liu Shengxi &amp;gt; Mail: [email protected] &amp;gt; Cr...原创 2018-06-06 18:01:03 · 2992 阅读 · 4 评论 -
C++ 复习 01
文章目录STL之容器顺序容器vector 线性连续地址空间deque 双端队列deque 的迭代器关联容器无序关联容器容器适配器STL之算法:std::sort的实现最小分段阈值 _S_threshold = 16STL之空间配置器:1. 标准空间配置器 std::allocator2.特殊的空间配置器 std::alloc对象的构造与析构内存空间的配置与释放第一层配置器 >128 B __ma...原创 2019-03-26 22:38:24 · 295 阅读 · 0 评论 -
C++ 常考面试点总结
文章目录list 和 vector区别指针和引用的区别list 和 vector区别答:一个是数组,一个是链表。就是数组和链表的区别指针和引用的区别C++primer中对 对象的定义:对象是指一块能存储数据并具有某种类型的内存空间一个对象a,它有值和地址&a,运行程序时,计算机会为该对象分配存储空间,来存储该对象的值,我们通过该对象的地址,来访问存储空间中的值...原创 2019-09-08 21:54:34 · 354 阅读 · 0 评论 -
C++ primer 之定义行为像指针的类
提前声明 ,这是一篇水博!!!1.使用智能指针实现:#include <string>#include <iostream>#include <memory>using namespace std ;class HasPtr {public: HasPtr(const std::string &s = std::string()) : ps(make_shared<string>(原创 2018-04-08 19:25:47 · 437 阅读 · 0 评论 -
C++之文本查询系统
1. 整体需求使用标准库实现一个简单的文本查询系统。允许用户在一个给定的文件中查询单词。查询结果是单词在文件中出现的次数以及所在行的列表。如果一个单词在一行中出现多次,该行也只列出一次,但是出现的次数得统计在内。行序号按照升序输出。2. 程序需要完成的功能和实现效果需要完成的功能:1.从文件按行读入信息,并将单词分离开来。2.必须提取到每一个单词所出现的行号 3.行号按照升序排列且不重复4.必原创 2018-04-07 23:00:01 · 3417 阅读 · 1 评论 -
C++如何实现单例模式?
这是在看侯捷C++视频的时候,他提出的一个问题,称之为单例模式(singleton),有两种实现方式(懒汉与饿汉),还有多线程,使用场景(工厂模式)等等一些相关的东西,更多了解可以去百度一下。在此就简单做一个总结。方法一共有n个。根据侯老师所言,目前这两种是比较好的实现方式,所以找出来与大家分享一下。一是:#include<iostream>#include<vec...原创 2018-02-25 13:44:13 · 7362 阅读 · 1 评论 -
简单聊一下const
问题索引:1.为什么要存在这种东西?2.它有什么样的作用?3.与define 有什么联系?4.C与C++中的const有什么区别?5. C++ 11 中又有了些什么新的东西?解:1.为什么要存在这种东西?就是为了避免程序员在编程时,手残修改关键部分的值(其实想一想内核为什么会分内核态和用户态,类中为什么要有public和private也就明白了)2.它有什么样的作用?其实说的简单点就是保护被修饰的东原创 2017-11-02 23:04:52 · 392 阅读 · 0 评论 -
c++ primer 第六章总结
1.传值与传引用形参与实参:(1)形参一定会被初始化(2)形参名可选,如果没有形参名那么我们就不能使用该形参,所以一般都会有形参名。出现未命名的形参,一般就是说我们在该函数中用不到它,但还是必须给他提供实参。传值与传引用传值:(1)发生值的拷贝 (2)形参与实参是两个不同的东西 (3)对形参的操作不会影响实参传引用(1)传引用是它对应实参的一个别名 (2)对它操作就是在对实参操作该注意的几点:原创 2017-12-09 15:24:05 · 368 阅读 · 0 评论 -
c++基础概念之深浅拷贝
0.拷贝构造函数其实就是类与类之间的赋值操作所要调用的函数(因为类对象与普通对象不同,类对象内部结构较为复杂,存在各种成员变量)代码举例:#include<iostream>using namespace std;class Myclass { private: int a; public: //构造函数 Myclass(int b) { a原创 2017-11-24 21:47:02 · 183 阅读 · 0 评论 -
vector 实现二维数组
1.vector是什么?vector 基础知识2.如何实现:实现代码:#include<iostream>#include<vector>#define count 3 using namespace std;//目标就是完成二维vector的所有操作 int main(void){ vector<vector<int>> vec1(count) ; //二维数组的 vecto原创 2018-01-01 15:09:44 · 37705 阅读 · 3 评论 -
Stack与Queue的实现(c++模板实现)
stack 的实现1.特征:先进后出 。只能插入,删除,访问栈顶的元素 !!2.实现可以用 vector ,list ,deque 来实现。但是 vector和deque 的实现要比list实现的性能好#include<iostream>#include<deque>using namespace std;template<class T ,class cont = deque<T> > /原创 2018-01-24 16:48:43 · 1271 阅读 · 0 评论 -
C++继承基础总结
1.继承的基本概念1.类与类之间的关系has-A,包含关系,用以描述一个类由多个“部件类”构成,实现has-A关系用类的成员属性表示,即一个类的成员属性是另一个已经定义好的类。use-A,一个类使用另一个类,通过类之间的成员函数相互联系,定义友元或者通过传递参数的方式来实现。is-A,即继承关系,关系具有传递性。2.继承的相关概念 万事万物皆有继承这个现象,所谓的继承就是一个类继承了另一个原创 2018-02-26 20:27:36 · 184 阅读 · 0 评论 -
C++继承之隐藏
1.隐藏的基本概念什么是隐藏 ?就是说在下面的这种情况下,父类的ABC会在子类中进行隐藏,但是子类的确继承了父类的ABC函数 。如果一定要使用父类中的ABC,那么必须进行特殊处理。(1)成员函数的隐藏#include<iostream>#include<vector>#include<string>using namespace std;class Person{public: P原创 2018-02-26 22:16:13 · 668 阅读 · 0 评论 -
虚继承
多继承和多重继承导致的问题?多继承:就是某一个类继承了好几个基类多重继承:就是类被一层一层的继承在上面的这幅图中,类B会拷贝一份A的数据,类C会拷贝一份A的数据,那么这时候类D再继承B和C的话,就会在类D中存在两份A的拷贝 。这是绝对不允许的 。一是浪费空间,二是存在二义性举例如下:农民工中就会存在两份人的数据 。虚继承的出现和实现原理 ?正因为上面所说的问题的出现,为了解决这个问题,提出了虚继原创 2018-03-14 17:55:20 · 175 阅读 · 0 评论 -
运算符重载的几个小例子
1.坐标 :#include &amp;amp;lt;iostream&amp;amp;gt;using namespace std;/** * 定义Coordinate类 * 数据成员:m_iX,m_iY * 成员函数:构造函数 * 重载--运算符,重载+运算符 */class Coordinate // 坐标{public: Coordinate(int x, int y) {...原创 2018-03-14 21:49:23 · 645 阅读 · 0 评论 -
C++面向对象编程思想与C++11新特性
文章目录类与类之间都有什么关系?众所周知,面向对象程序设计思想有三大基本特性:封装,继承,多态。封装封装最好理解。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现...原创 2019-09-21 16:14:43 · 592 阅读 · 0 评论