随笔分类 -  C++

摘要:多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。多继承时很容易产生命名冲突,即使我们很小心地将所有类中的成员变量和成员函数都 阅读全文
posted @ 2020-06-15 16:55 卖雨伞的小男孩 阅读(438) 评论(0) 推荐(0) 编辑
摘要:一、STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前,该 阅读全文
posted @ 2020-06-15 11:50 卖雨伞的小男孩 阅读(615) 评论(0) 推荐(0) 编辑
摘要:在linux下开发难免会遇到bug,但是由于没有图形IDE,导致debug也变得困难,其实只要掌握一些常用的debug工具,一些错误就能很快解决,本文就介绍一些常用的工具用以调试: log输出log永远是最简单快捷的调试方式,可以快速定位bug,通过设置日志级别控制日志的输出详略程度,结合一些文本分 阅读全文
posted @ 2020-05-20 15:21 卖雨伞的小男孩 阅读(373) 评论(0) 推荐(0) 编辑
摘要:一、gcc与g++比较 编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是 阅读全文
posted @ 2020-05-19 16:03 卖雨伞的小男孩 阅读(331) 评论(0) 推荐(0) 编辑
摘要:c++bind函数的用法 bind函数: auto newCallable = bind(callable, arg_list); callable依据手册可以是: Callable object (function object, pointer to function, reference to 阅读全文
posted @ 2020-05-15 11:45 卖雨伞的小男孩 阅读(260) 评论(0) 推荐(0) 编辑
摘要:如果想要有效的管理一个稍微复杂一点的体系,针对其中事物的一套统一、带层次结构、清晰明了的命名准则就是必不可少而且非常好用的工具。 活跃在生物学、化学、军队、监狱、黑社会、恐怖组织等各个领域内的大量有识先辈们都曾经无数次地以实际行动证明了以上公理的正确性。除了上帝(设它可以改变世间万物的秩序)以外,相 阅读全文
posted @ 2020-05-14 17:46 卖雨伞的小男孩 阅读(307) 评论(0) 推荐(0) 编辑
摘要:一、前言 什么是回调函数?各类语言中都存在回调函数,C语言和C++一系列语言中通过回调机制实现模块化、多态化、不同模块的参数传递。 回调机制,c语言和c++的回调机制主要通过函数指针来实现。 typedef T(*PFuncCallback)(T1 param1,T2 param2); 二、c语言多 阅读全文
posted @ 2020-05-14 17:36 卖雨伞的小男孩 阅读(1491) 评论(0) 推荐(0) 编辑
摘要:stack, deque 和 queue这三个c++的STL的数据结构很类似但又各有不同。 stack是堆栈,没有迭代器,特点是后进先出。用push()将元素压入栈中,top()返回栈顶元素,pop()移除栈顶元素。 deque是双端队列,支持迭代器,使用push_back()在队尾添加元素,pop 阅读全文
posted @ 2020-05-12 15:33 卖雨伞的小男孩 阅读(770) 评论(0) 推荐(0) 编辑
摘要:STL中的容器可以分为两大类: 1、顺序容器:list,queue,vector 2、关联容器:map,set(当然对应的有multimap,multiset) 其中vector的存储结构是数组,其它的存储结构是链表。 言归正传,现在看一下vector和set的区别: 首先vector属于顺序容器, 阅读全文
posted @ 2020-05-12 15:30 卖雨伞的小男孩 阅读(3651) 评论(0) 推荐(1) 编辑
摘要:set集合是c++ stl库中自带的一个容器,set具有以下两个特点: 1、set中的元素都是排好序的 2、set集合中没有重复的元素 常用操作: begin() 返回set容器的第一个元素的地址 end() 返回set容器的最后一个元素地址 clear() 删除set容器中的所有的元素 empty 阅读全文
posted @ 2020-05-12 15:28 卖雨伞的小男孩 阅读(2373) 评论(0) 推荐(0) 编辑
摘要:begin() 返回指向map头部的迭代器 clear() 删除所有元素 count() 返回指定元素出现的次数 empty() 如果map为空则返回true end() 返回指向map末尾的迭代器 equal_range() 返回特殊条目的迭代器对 erase() 删除一个元素 find() 查找 阅读全文
posted @ 2020-05-12 15:25 卖雨伞的小男孩 阅读(392) 评论(0) 推荐(0) 编辑
摘要:map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree)。由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转调 RB-tree 的操作行为。 map和set区别在于: (1)map中的元素是key-value 阅读全文
posted @ 2020-05-12 14:21 卖雨伞的小男孩 阅读(3250) 评论(0) 推荐(0) 编辑
摘要:在C++中,声明自定义的类型之后,编译器会默认生成一些成员函数,这些函数被称为默认函数。其中包括 (1)(默认)构造函数 (2)拷贝(复制)构造函数 (3)拷贝(复制)赋值运算符 (4)移动构造函数 (5)移动赋值运算符 (6)析构函数 另外,编译器还会默认生成一些操作符函数,包括 (7)opera 阅读全文
posted @ 2020-05-12 14:17 卖雨伞的小男孩 阅读(613) 评论(0) 推荐(0) 编辑
摘要:1、strcpy原型实现 char * my_strcpy(char *des,const char *src) { assert((des != nullptr) && (src != nullptr)); char *address = des; while (*src != '\0') { * 阅读全文
posted @ 2020-05-12 14:01 卖雨伞的小男孩 阅读(253) 评论(0) 推荐(0) 编辑
摘要:其实对于 std::move来说,只做了一件事。可以初步的理解为 (不过当然是错误的) template<typename T>T&& move(T& val){ return static_cast<T&&>(val);}move 只是纯粹的将一个左值转化为了一个右值,STL实现基本都已经实现了移 阅读全文
posted @ 2020-05-11 18:05 卖雨伞的小男孩 阅读(331) 评论(0) 推荐(0) 编辑
摘要:类继承关系图 注:从图中可以看出,派生类不仅有自己的方法和属性,同时它还包括从父类继承来的方法和属性。当我们从派生类向基类转换时,不管用传统的c语言还是c++转换方式都可以百分百转换成功。但是可怕是向下转换类型,也就是我们从基类向派生类转换,当我们采用传统的C语言和c++转换时,就会出现意想不到的情 阅读全文
posted @ 2020-05-11 17:56 卖雨伞的小男孩 阅读(406) 评论(0) 推荐(0) 编辑
摘要:右值引用若不作为函数参数使用,基本等于滥用 右值引用 (Rvalue Referene) 是 C++ 新标准 中引入的新特性 , 它实现了移动语义 (Move Sementics) 和完美转发 (Perfect Forwarding)。它的主要目的有两个方面: 1. 消除两个对象交互时不必要的对象拷 阅读全文
posted @ 2020-05-11 17:42 卖雨伞的小男孩 阅读(607) 评论(0) 推荐(0) 编辑
摘要:C++中有一个重要特性,那就是模板类型。类似于Objective-C中的泛型。C++通过类模板来实现泛型支持。 1 基础的类模板 类模板,可以定义相同的操作,拥有不同数据类型的成员属性。 通常使用template来声明。告诉编译器,碰到T不要报错,表示一种泛型. 如下,声明一个普通的类模板: tem 阅读全文
posted @ 2020-05-11 10:33 卖雨伞的小男孩 阅读(403) 评论(0) 推荐(0) 编辑
摘要:答:在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 代码说明如下 第一段代码: 1 #include<iostream> 2 using namespace std; 3 4 class ClxBase 5 {public: 6 ClxBase() {} 7 ~C 阅读全文
posted @ 2020-05-09 17:39 卖雨伞的小男孩 阅读(800) 评论(0) 推荐(0) 编辑
摘要:1、首先我们需要一些宏: //********************************************// Interface.h//主要是宏定义一些关键词,可以形成接口类//********************************************#ifndef IN 阅读全文
posted @ 2020-05-09 17:23 卖雨伞的小男孩 阅读(1517) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示