自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

原创 【二十】一个面试题

面试题: 写函数判断一个变量是否为指针?要解决这个问题,要用一个巧妙的方法,先回顾一下相关知识点:C++中仍然支持C语言中的可变参数函数C++编译器的函数匹配调用优先级 重载函数函数模板可变参数函数Tip: 如果同时存在普通函数和其重载版本、模板函数、可变参数函数,编译器会优先调用普通函数和其重载版本,然后依次时模板函数和可变参数函数!示例:#include <cstdlib>#i

2015-08-28 10:44:16 666

原创 【十九】一些实际工程中的问题

1、Bug在实际工程中内存操作是bug的重要来源C++将堆内存交由开发人员自由使用,因此 未及时释放,将产生内存泄漏重复释放同一段内存,行为未知使用越界,操作了不属于自己的内存思考: 怎样最大限度的避开上述的使用问题?2、数组类 内存越界的问题常发生于数组的使用中 解决方案:数组类工程中,在非特殊情况下,要求开发者使用预先编写的数组类对象代替C++语言中的原生数组,而其实C++中也

2015-08-27 12:17:49 703

原创 【十八】类模板(下)

本篇接着上一篇的内容介绍!1、类模板多个类型参数和函数模板一样,一个类模板也可以定义多个类型参数! 如下:#include <iostream>using namespace std;template <typename T1, typename T2>class Test{public: void test(T1 a, T2 b) { cout << static_cas

2015-08-26 16:42:12 597

原创 【十七】类模板(上)

1、引入类模板C++中可以将模板的思想应用于类,使得类可以不关注具体操作的数据类型,而只关注类所需要实现的功能。C++中的类模板提供一种特殊的类以相同的行为处理不同的类型在类声明前使用template进行标识< typename T> 用于说明类中使用的泛指类型 T在模板类外部定义成员函数的实现时,需要加上template < typename T>的声明,并且类作用域为:classname

2015-08-26 11:17:23 547

原创 【十六】函数模板

1、引入泛型编程在以前C语言中,如果一个函数要处理不同的数据类型,那么需要为每种数据类型都定义一个函数实行,例如下面的函数:void Swap(int& a, int& b){ int temp = a; a = b; b = temp;}void Swap(char& a, char& b){ char temp = a; a = b; b = temp;}void

2015-08-25 17:08:38 538

原创 【十五】继承与多态(下)

1、重载和重写思考:重载和重写有什么区别?什么时候是重载,什么时候是重写?函数重载 必须在同一个类中进行子类无法重载父类的函数,父类同名函数将被覆盖重载是在编译期间根据参数类型和个数决定调用函数函数重写 必须发生于父类与子类之间并且父类与子类中的函数必须有完全相同的原型使用virtual声明之后能够产生多态多态是在运行期间根据具体对象的类型决定调用函数举例: 假如有如下两个类:

2015-08-24 17:14:46 635

原创 【十四】继承与多态(上)

1、函数重写上一篇文章中说到,当子类定义一个与父类同名的成员变量时,父类的该成员变量依然会被继承到子类,它们两者可通过作用域限定符来区分,那么,如果子类中定义了和父类相同类型且同名的函数又会怎样呢?这就是函数重写!在子类中定义与父类中原型相同的函数函数重写只发生在父类与子类之间#include <cstdlib>#include <iostream>using namespace std;c

2015-08-24 15:11:46 626

原创 【十三】继承中的构造与析构

1、赋值兼容性原则子类对象可以当作父类对象使用子类对象可以直接赋值给父类对象子类对象可以直接初始化父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象所以,在上一篇文章中说: 子类是就是特殊的父类!!!2、继承对象模型类在C++编译器的内部可以理解为结构体 子类是由父类成员叠加子类新成员得到的3、继承和构造与析构思考:   一个从父类继承来的子类在构造时,如何初始化

2015-08-24 11:56:42 785

原创 【十二】初探继承

1、继承概念面向对象中的继承指类之间的父子关系子类拥有父类的所有成员变量和成员函数子类就是一种特殊的父类子类对象可以当作父类对象使用子类可以拥有父类没有的方法和属性示例:class Parent{private: int a;public: Parent() { a = 100; } void print() { cout << "a = "

2015-08-24 10:15:25 565

原创 【十】类的静态成员

1、类的静态成员在C++中可以定义静态成员变量和静态成员函数静态成员属于整个类所有,不需要依赖任何对象,会在全局数据区分配空间静态成员可以是public、private和protected的可以在类外,通过类名或者对象名直接访问public静态成员不可以在类外,访问private或protected静态成员类的成员函数不用通过作用域运算符,就可以直接访问静态成员变量    2、静态

2015-08-23 16:36:59 663

原创 【七】C++一些新的关键字 -- new、delete、强制类型转换

1、动态内存分配C++中的动态内存分配已经和C语言有了明显区别:C++中通过new关键字进行动态内存申请C++中的动态内存申请是基于类型进行的delete关键字用于内存释放  变量申请和释放:Type* pointer = new Type;// ……delete pointer;  数组申请和释放:Type* pointer = new Type[N];// ……delete[

2015-08-23 14:55:34 2351

原创 【十一】运算符重载(下)

1、回顾上一节 上一节中,我们通过了两个全局友元函数进行了运算符重载,并且简单说明了如何进行类成员函数的运算符重载,这里首先将全局重载函数改写为成员重载函数!示例:#include using namespace std;class Complex{private: int a; int b;public: Complex(int i = 0, in

2015-08-23 09:54:16 725

原创 【十】运算符重载(上)

1、C++标准库C++标准库并不是C++语言的一部分C++标准库是由C++语言编写而成的类库和函数的集合C++标准库中定义的类和对象都位于std命名空间中C++标准库的头文件都不带.h后缀C++标准库涵盖了C库的功能C库中name.h头文件对应C++中的cname头文件C++标准库预定义了多数常用的数据结构,如:字符串,链表,队列,栈等示例:一个类C风格的C++程序:#include

2015-08-22 18:05:22 484

原创 【九】面向对象的相关概念

目录目录1基本概念2C中类的封装3构造函数4初始化列表5类中的const成员6初始化与赋值7析构函数8构造与析构的调用顺序1、基本概念  类和对象的基本概念“类”指的是一类事物,是一个抽象的概念“对象”指的是属于某个类的一个实体,是一个具体存在的事物   Tip:  类是一种“模板”,可以通过这种模板创建出不同的对象“实例” 对象“实例”是类“模板”的一个具体实现

2015-08-19 11:40:16 600

原创 【八】疑难问题小结(一 -- 七篇)

目录目录1const和引用的疑惑什么是符号表符号表存储在程序中的哪个地方怎样定义const常量才会使用符号表2引用与指针的疑惑指针与引用的区别如何理解引用的本质就是指针常量3重载与默认类型转换C编译器对字面量的处理方式当使用字面量对变量进行初始化或赋值时深入理解重载规则4C方式编译的疑惑深入理解extern C1、const和引用的疑惑关于const和引用的疑难问题,在前面的

2015-08-17 13:38:19 930

原创 【六】C & C++ 函数相互调用

在项目中融合C++和C代码是实际工程中不可避免的,虽然C++编译器能够兼容C语言的编译方式,但C++编译器会优先使用C++的方式进行编译,为了让它们能互相调用,可以利用extern关键字强制让C++编译器对代码进行C方式编译!    1、C++调用C编写的函数假设有如下的代码:  main.cpp#include <iostream>#include "test.h"using namesp

2015-08-15 16:54:21 1851

原创 【五】C++函数的升级(二)

目录目录1函数默认参数2函数占位参数1、函数默认参数C++中可以在函数声明时为参数提供一个默认值,当函数调用时没有指定这个参数的值,编译器会自动用默认值代替只有参数列表后面部分的参数才可以提供默认参数值一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参数都必须使用默认参数值示例:exp-1.cpp#include <stdio.h>int add(int a, int b =

2015-08-15 11:47:48 557

原创 【四】C++函数的升级(一)--内联函数

目录目录1宏的回顾2内联函数的使用3内联函数4内联函数的特点4编译器的优化5内联编译的限制6内联实现机制1、宏的回顾在C语言中,可以定义宏常量和宏代码片段,但是它们各自都有不足,它们都是在预编译阶段进行简单的文本替换,没有类型安全等相关检查;在C++中,宏常量可以用const常量代替,并且const常量会更加安全,它在编译阶段进行处理; const int A = 3; <==>

2015-08-15 11:13:31 1005

原创 解决 Linux Mint 17.2 Nvidia驱动下屏幕亮度无法调节问题

今天,我使用了Nvidia的专有驱动,然后花了一点时间解决了屏幕无法调节亮度的问题,现将解决方法做个详细说明:  本方法理论上支持Linux Mint 17 以上的版本,至于Ubuntu 和Debian,请自行测试!1、更改专有驱动  打开【系统设置】–在【驱动管理器】中将Nvidia显卡驱动更改至推荐的专有版本!写这篇博客时,该驱动版本为:  更改完成后,先重启一下,让系统先使用上该驱动!同时,你

2015-08-14 19:48:01 3957 2

原创 【三】C++引用机制

目录目录1变量名回顾2引用的概念3引用的意义4const引用5引用的本质6函数返回引用7C对三目运算符做了什么8小结   1、变量名回顾变量是一段实际连续存储空间的别名程序中通过变量来申请并命名存储空间通过变量的名字可以使用存储空间  如图:   思考:   对于一段连续的存储空间只能有一个别名吗? 肯定不是,因此我们可以给同一个连续的存储空间取多个别名,这就诞生

2015-08-14 16:52:19 1558

原创 【二】C++基于C的一些改变

1、布尔类型C++在C语言的基本类型系统之上增加了bool;实际上,C99的标准中也引入了bool类型,使用时需要引用stdbool.h头文件C++中的bool可取的值只有truea和false;理论上bool只占用一个字节,如果多个bool变量定义在一起,可能会各占一个bit,这取决于编译器的实现;C++编译器会在赋值时将非0值转换为true,0值转换为false; Tip:true

2015-08-14 11:01:03 713

原创 【一】C++基于C的一些改变

1、register关键字的变化register关键字请求“编译器”将局部变量存储于寄存器中 C语言中无法取得 register 变量地址在C++中依然支持register关键字 C++编译器有自己的优化方式,不使用register也可能做优化C++中可以取得 register 变量的地址  C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。

2015-08-13 17:12:57 1023

原创 【二十七】图的遍历--DFS、BFS

1、图遍历的定义从图中的某一顶点出发,沿着一些边访遍图中所有的顶点,使得每个顶点仅被访问一次。2、方法分类深度优先搜索(Depth First Search)广度优先搜索(Breadth First Search)3、DFS 示例4、DFS 算法描述5、算法实现/*深度优先,遍历graph所指图中的每个顶点* 参数: graph: 指向图的指针 v: 起始顶点

2015-08-12 18:51:44 1656

原创 【二十六】图的存储结构--邻接链表法

1、邻接链表法 基本思想:示例: 2、数据结点定义3、算法实现数据类型声明/** 邻接链表法,数据结构定义*/typedef struct _struct_lgraph{ int count; //存储结点数目 LVertex **data; //一个指针数组,记录与顶点相关的数据描述 Linklist **la; //一个指针

2015-08-12 09:32:59 1482

VISUAL_C++实践与提高:串口通信与工程应用篇

VISUAL_C++实践与提高:串口通信与工程应用篇,本压缩包内包含完整版的PDF与本书配套光盘!资源来源于网络!

2014-12-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除