![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 77
我不叫小海南
这个作者很懒,什么都没留下…
展开
-
类模板与模板类
类模板:就是设计类的一种框架,可以适用于不同的数据类型,是类的抽象。利用类模板可以针对不同的数据类型定义出具有共性的一组类。定义:template class 类模板名{类模板定义;};其中类型参数列表与函数模板形式相同,如定义类模板时应注意以下几点:①要是用关键字template②类型形参列表可以包含抽象的形式类型,也可以是基本数据类型,但至少有一个参原创 2017-06-11 15:27:07 · 816 阅读 · 0 评论 -
C++函数实用经验
文章内容均整理自 刘光《C++程序员不可不知的101条实用经验》1.进制函数返回局部变量的引用请谨记:(1)函数返回时,保证返回数据超出函数范围后依然有效,如返回局部变量的引用就是禁止的(2)函数返回时,返回new生成的对象也是不可取的,这样会使代码层次混乱,不能保证做到及时回收资源2.函数传值,传指针及传引用的效率分析(1)值传递如果传值类型为类类型,函数会调用类的构造函数进行类对象构造和...原创 2018-06-04 16:37:02 · 330 阅读 · 0 评论 -
C++字符和字符串实用经验
文章内容均整理自 刘光《C++程序员不可不知的101条实用经验》1.关于字符编码的讨论ASCII字符集:主要包括控制字符(回车键,退格,换行键等);可显示字符(英文大小写字符,阿拉伯数字和西文符号)。ASCII编码:将ASCII字符集转为计算机可以接受的数字系统的数的规则。使用7bits表示一个字符,共128个字符。ASCII扩展字符集使用8bits,可表示256个字符注意:ASCII不能对...原创 2018-06-04 16:37:48 · 471 阅读 · 0 评论 -
C++预处理实用经验
文章内容均整理自 刘光《C++程序员不可不知的101条实用经验》1.使用#define定义字面值和伪函数①简单的宏定义形式为: #define <宏名> <字符串>注意:(1)在程序中,如果#define出现在函数外面,宏的有效范围为宏定义之后到本源文件结束。用#undef可以终止宏定义的作用域(2)在进行宏定义时,可以用已经定义的宏名,可层层替换,但对于用引号引起来...原创 2018-06-04 16:38:30 · 224 阅读 · 0 评论 -
C++类的实用经验
文章内容均整理自 刘光《C++程序员不可不知的101条实用经验》1.绝不让构造函数为虚函数 关于构造函数:(1)构造函数是一个特殊的函数,其名称和类名称一样,并且不能指定返回值类型(2)声明一个类时可以不定义构造函数,但这并不能说明此类就没有构造函数。编译器会自动实现一个默认构造函数,也就是说每个类都至少存在一个构造函数(3)构造函数可接受多个参数,而且支持重载机制(4)一个类若显示地声明...原创 2018-06-04 16:41:19 · 389 阅读 · 0 评论 -
C++重载操作符实用经验
文章内容均整理自 刘光《C++程序员不可不知的101条实用经验》1.有重载&&、||和,操作符想到的小心陷阱:(1)不要重载&&和||运算符。因为重载&&和||,会导致&&和||失去简短求值功能。这是我们不愿看到,同时也存在风险(2)同样不要重载,和()操作符重载规则(1)类的设计者不能声明一个没有预定义的重载操作符(2)不能为...原创 2018-06-04 16:42:24 · 180 阅读 · 0 评论 -
C++继承和多态实用经验
文章内容均整理自 刘光《C++程序员不可不知的101条实用经验》1.多态基类的析构函数应为虚函数小心陷阱:(1)在C++中,当一个派生类对象通过使用一个积累指针删除,而这个基类有一个非虚的析构函数,则结果是未定义的。运行时比较有代表性的后果是对象的派生部分不会被销毁。然而,基类部分很可能已被销毁,这就导致一个奇怪的“部分析构”对象,这是一个泄漏资源。(2)排除这个问题的方法是,给基类一个虚析...原创 2018-06-04 16:43:17 · 225 阅读 · 0 评论 -
C++模板和泛型实用经验
文章内容均整理自 刘光《C++程序员不可不知的101条实用经验》1.将模板的声明和定义放到一个文件中请谨记:(1)模板实现由3种方法:声明和实现在同一个头文件中;声明和实现分离,包含头文件;实用关键字export分离(2)建议选择声明和实现在同一个头文件中,因为其他两种实现都各有缺陷2.区分继承、模板及组合注意:(1)当对象的类型不影响类中函数的行为时,就要使用模板来生成这样一组类(2)当对...原创 2018-06-05 19:05:00 · 282 阅读 · 0 评论 -
STL空间配置器剖析
stl有容器,空间配置器,适配器,迭代器,仿函数以及算法这6个组件它们六者关系大概如下:容器通过配置器取得数据存储空间,算法通过迭代器获取容器内容,仿函数可以协助算法完成不同的策略变化,配接器可以修饰或套界仿函数。1.STL空间配置器的类型和标准接口定义(1)类型allocator::value_type;allocator::pointer;allocator::const_pointer;...转载 2018-06-05 17:11:48 · 203 阅读 · 0 评论 -
STL中uninitialized_copy、uninitialized_fill、uninitialized_fill_n剖析
什么是POD类型?1、 所有标量类型(基本类型和指针类型)、POD结构类型、POD联合类型、以及这几种类型的数组、const/volatile修饰的版本都是POD类型。2、 POD结构/联合类型:一个聚合体(包括class),它的非static成员都不是pointer to class member、pointer to class member function、非POD结构、非POD联合,以及...原创 2018-06-05 19:57:54 · 5564 阅读 · 1 评论 -
STL源码剖析之——算法的泛化过程
文章转载自https://www.cnblogs.com/jiayayao/p/6380095.html参考内容:侯捷先生的《STL源码剖析》将一个叙述完整的算法转化为程序代码,不是什么难事。然而,如何将算法独立与其所处理的数据结构之外,不受数据结构的羁绊呢?换个说法,如何将我们所写的程序算法适用于任何(或者大部分)未知的数据结构(比如array,vector,list等)呢? 关键在于,只要把...转载 2018-06-14 10:21:52 · 204 阅读 · 0 评论 -
C++表达式和语句实用经验
文章内容整理自 刘光《C++程序员不可不知的101条实用经验》1.运算符引发的混乱①粗心导致的混乱,如将“==”写成了“=”,这种情况在if语句中能够编译通过②优先级导致的混乱,如 cout << a ? “1” : “2”,程序本意是若a为真则输出“1”,否则输出“2”,但<<运算符的优先级比条件表达式的优先级高,应改正为cout << (a ? “1”...原创 2018-06-04 16:35:38 · 587 阅读 · 0 评论 -
C++数组和指针实用经验
文章内容均抄自 刘光《C++程序员不可不知的101条实用经验》1.理解指针的本质数组和指针的区别在于数组的长度是固定的,只能存取某一种元素,一旦创建就不允许添加其他的元素。而指针可以像索引一样指向数组的每个元素。C++规定:存放地址的变量称为指针变量,变量的地址称为变量的指针。在32位系统中指针的宽度为32位(即4个字节)。小心陷阱:(1)一个指针变量定义了就要确保初始化,以防指针悬空或变成...原创 2018-06-04 16:34:12 · 242 阅读 · 0 评论 -
递归详解(斐波拉契和汉诺塔应用)
1、什么是递归递归是一种特殊的算法,简单来说,程序中的函数不仅仅是被其他函数调用,也可以被自己本身调用,一个函数调用自己就是所谓的“递归”。任何可以用选择结构和循环结构来编写的程序代码,都可以用递归编写。2、递归的条件(1)可以反复执行的递归过程(2)有一个跳出递归过程的条件,也就是不能无限递归。举一个简单的例子,数学中的阶乘我们可以用递归的思想去解决。3的阶乘我们可以表示3!原创 2017-06-23 12:54:34 · 747 阅读 · 0 评论 -
c++常用知识点1
1.helloworld程序#include using namespace std;int main(){ cout<<"hello world"<<endl; return 0;}2.命名空间namespace本质:程序员开辟的一块内存空间作用:避免名字冲突使用:定义名字空间原创 2017-08-21 12:42:55 · 201 阅读 · 0 评论 -
c++常用知识点2
1.动态内存分配C语言中使用malloc()申请内存空间 ,用free()释放内存空间 C++中使用new申请内存空间 ,用delete释放内存空间1. new 用于分配内存new是根据类型来自动分配空间int *p = new int;delete用于释放内存原创 2017-08-21 12:50:26 · 245 阅读 · 0 评论 -
c++常用知识点3
1.初始化列表构造函数(初始参数):要初始化的成员(初始值),...{}建议直接使用初始化列表来初始化所有的成员--------------------------------------------------------------------------------------------------原创 2017-08-21 13:00:24 · 205 阅读 · 0 评论 -
c++常用知识点4
组合与继承:组合:has-a关系继承:is-a关系C++类的继承,指用现有类来创建新的类,即新类会获得已有类的属性和行为,并且可以添加新的属性和行为新的类称为子类或派生类,已有类称为父类或基类!格式:class 派生类名: 继承方式 基类名{//派生类新增加的成员};继承的过程:1.接收基类的成原创 2017-08-21 13:03:17 · 197 阅读 · 0 评论 -
c++常用知识点5
1.函数重写overload重载override重写函数重写只发生在父子类之间在派生类中定义与基类函数原型相同(返回类型、函数名、参数列表)的函数2.赋值兼容性原则在基类与公有派生类之间也存在赋值兼容原则is-a 关系原创 2017-08-21 13:08:54 · 207 阅读 · 1 评论 -
c++类的简单实现
#include #include using namespace std;class link_list{ private: struct node { int data; node *next; }*head; public: link_list()//构造原创 2017-08-21 13:11:11 · 336 阅读 · 0 评论 -
alsa库的移植
1.下载alsa-1.0.tar.gz 到开发板下载地址2.解压alsa-1.0.tar.gz库tar -xzvf alsa-1.0.tar.gz3.把alsa库中的所有工具下载到/bin目录 cd /alsa-1.0.22/bin cp * /bin -R 4.把alsa库中的所有库下载到/原创 2017-08-06 23:36:25 · 593 阅读 · 0 评论 -
C++变量和类型实用经验
文章内容均抄自 刘光《C++程序员不可不知的101条实用经验》1.计算机是如何存储变量的只读数据区:存储常量和恒指全局/静态存储区:全局/静态存储区主要存储全局变量和静态变量。在C语言中,全局/静态变量又分为初始化的全局/静态变量和未初始化的全局/静态变量,初始化后的全局/静态变量存储在data去,未初始化后的全局/静态变量存储在bss区。而在C++中没有这个区分。自由存储区:指CRT(C运...原创 2018-06-04 16:30:54 · 261 阅读 · 0 评论 -
C++关键字实用经验
文章内容均抄自 刘光《C++程序员不可不知的101条实用经验》1.尽可能多地使用const① int const a 和 const int a等价,表示一个整型常量② int const * a 和 const int * a等价const在*的左边,说明指针所指向的对象是常值,如果指向的对象是常值,const在类型的前面和后面都一样③ int * const acons...原创 2018-06-04 16:33:05 · 141 阅读 · 0 评论 -
STL源码剖析之——数值算法
C++ STL 的数值算法(Numeric algorithms)是一组对容器元素进行数值计算的模板函数,包括容器元素求和 accumulate 、两序列元素的内积 inner_product 、容器元素的一系列部分元素和 partial_sum 、容器每对相邻元素的差adjacent_difference。1、accumulate/** 函数名: accumulate* 功能: 将指定...原创 2018-06-14 18:28:48 · 323 阅读 · 0 评论