C++
文章平均质量分 57
shikelang_pp
视频编码,C++,数据结构
展开
-
C++普通函数,普通成员函数、静态成员函数的区别
1普通函数:属于全局函数,不受具体类和对象的限制,可以直接调用。例如:void printf(){printf("Hello World");}2普通成员函数:C++普通成员函数本质上是一个包含指向具体对象this指针的普通函数,即c++类的普通成员函数都隐式包含一个指向当前对象的this指针。例如:定义一个类:class myClass{publi原创 2017-05-13 22:24:53 · 10490 阅读 · 0 评论 -
函数模板与函数重载
函数模板遇上函数重载时:1、 函数模板可以像普通函数一样被重载2、 C++编译器优先考虑普通函数3、 如果函数模板可以产生一个更好的匹配,那么选择模板4、 可以通过空模板实参列表的语法限定编译器只通过模板匹配特别需要注意的是:函数模板不允许自动类型转化普通函数能够进行自动类型转换/*普通函数*/int Max(int a, int b){cout原创 2017-06-25 21:30:27 · 635 阅读 · 0 评论 -
友元函数友元类
友元函数:将普通函数声明为类的好朋友friend。这样在普通函数里面可以通过对象参数访问类的私有成员。例如:class Test2{public://友元函数的特点是:有一个参数是友元类的指针或引用friend int OpMem(Test2 *p,int a);//友元函数Test2(int a,int b){this->a =a;th原创 2017-05-14 09:55:07 · 272 阅读 · 0 评论 -
malloc 背后的系统知识
malloc 背后的系统知识2017/03/28 · IT技术 · malloc,内存管理, 操作系统 分享到:3本文作者: 伯乐在线 - legendtkl 。未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者。面试的时候经常会被问到 malloc 的实现。从操作系统层面来说,malloc 确实是考察面试者对操作系统底层的存储管理理转载 2017-08-07 19:55:43 · 413 阅读 · 0 评论 -
C++静态成员变量和静态成员函数的使用方法总结
一.静态成员变量:类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:1.静态数据成员的定义。静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。其定义方式与全局变量相同。举例如转载 2017-07-20 09:14:33 · 688 阅读 · 0 评论 -
C++正则表达式
正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。 正则表达式是一种文本模式。正则表达式是强大、便捷、高效的文本处理工具。正则表达式本身,加上如同一门袖珍编程语言的通用模式表示法(general pattern notation),赋予使用者描述和原创 2017-08-02 17:03:49 · 562 阅读 · 0 评论 -
C++中智能指针的设计和使用
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7561235 智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对转载 2017-07-27 11:04:23 · 291 阅读 · 0 评论 -
C++标准库和标准模板库
C++强大的功能来源于其丰富的类库及库函数资源。C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;(2)质量:标准库的都是经过严格测试的,正确性有保证;(3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平;(4)良好的编程风格:采用行业转载 2017-08-04 15:53:06 · 400 阅读 · 0 评论 -
C++之编译器与链接器工作原理
原文来自:http://blog.sina.com.cn/s/blog_5f8817250100i3oz.html 这里并没不是讨论大学课程中所学的《编译原理》,只是写一些我自己对C++编译器及链接器的工作原理的理解和看法吧,以我的水平,还达不到讲解编译原理(这个很复杂,大学时几乎没学明白)。要明白的几个概念: 1、编译:编译器对源文件进行编译,就是把源文件中的文本形式存在的转载 2017-08-04 16:16:22 · 342 阅读 · 0 评论 -
C++的顶层const和底层const的理解
最近,又一次翻开C++primer,决定仔细研究一下自己以前没搞懂的顶层const和底层const,这次看了后感觉明白了,所以记录下来,以后可以没事翻阅,增加记忆。首先,const是一个限定符,被它修饰的变量的值不能改变。对于一般的变量来说,其实没有顶层const和底层const的区别,而只有向指针这类复合类型的基本变量,才有这样的区别。 一 如何区分顶层const和底层const指针如果转载 2017-07-27 15:35:54 · 293 阅读 · 0 评论 -
C++ 智能指针详解
C++ 智能指针详解 一、简介由于 C++语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scop转载 2017-07-27 21:35:35 · 255 阅读 · 0 评论 -
C++ lambda 表达式
lambda表达式是C++11最重要也最常用的一个特性之一。lambda来源于函数式编程的概念,也是现代编程语言的一个特点。 一.函数式编程简介定义:简单说,“函数式编程”是一种“编程范式”。它属于“结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。 特点:1).函数是“第一等公民”,可以赋值给他其他变量,也可以做为参数,返回值。原创 2017-07-28 22:02:15 · 411 阅读 · 0 评论 -
list中的erase和remove
erase的作用是,使作为参数的迭代器失效,并返回指向该迭代器下一参数的迭代器。如下:[cpp] view plain copyprint?list ParticleSystem; list::iterator pointer; if(pointer->dead == true) { pointer = ParticleSyst原创 2017-08-16 09:06:35 · 484 阅读 · 0 评论 -
【C++】int转换为string的两种方法(to_string、字符串流)
记录一下用到过的int转换成string的两种方法第一种是to_string函数,这是C++11新增的,使用非常方便,简单查了下:C++11标准增加了全局函数std::to_string,以及std::stoi/stol/stoll等等函数(这几个就是string转int,long,以及long long啦~)to_string这个函数还是很强大的!string to_stri转载 2017-09-08 09:47:16 · 836 阅读 · 0 评论 -
C++ 中的string类型的变量占几个字节
本篇文章小编并不是为大家讲解string类型的用法,而是讲解我个人比较好奇的问题,就是string 类型占几个字节在C语言中我们操作字符串肯定用到的是指针或者数组,这样相对来说对字符串的处理还是比较麻烦的,好在C++中提供了 string 类型的支持,让我们在处理字符串时方便了许多、首先,我写了一段测试代码,如下所示:复制代码代码如下:#includ转载 2017-09-17 17:02:00 · 2469 阅读 · 0 评论 -
C++ 的map操作
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapmapint转载 2017-09-01 11:13:52 · 407 阅读 · 0 评论 -
综合面试(hr面)常问的问题
面试了一些大大小小的公司、企业,在综面马失前蹄实在令人心痛惋惜!总结综面的一些常见问题不外乎这几个,但是要回答好,却也并不容易。1.首先,开场白是自我介绍。 也许面试官在你之前已经问了n多位同学的自我介绍了,所以此时你的自我介绍别陷入老套,比如从叫什么名字(简历上本来就有),来自什么学校什么的,这会一开始让面试官失去兴趣,记得当初面试华为时,已是快中午十二点了,面试官转载 2017-07-12 11:19:30 · 31033 阅读 · 1 评论 -
C++ 多态问题详解
C++ 多态问题详解 一、多态问题的产生 class parent{public:parent(int a=0){this->a =a;}void print(){cout "父类a:" aendl;}protected:private:int a;}; class child :publi原创 2017-06-10 16:58:45 · 293 阅读 · 0 评论 -
C++面试常见题目问与答(汇总一)
[置顶] C++面试常见题目问与答(汇总一)标签: C++面试笔试2015-08-22 13:31 6450人阅读 评论(3)收藏举报本文章已收录于:分类: 面试题(1) 作者同类文章XC++(22) 作者同类文章X笔试题(2) 作者同类文章X转载 2017-06-20 09:50:38 · 955 阅读 · 0 评论 -
c++语言内存四区的概念:栈区,堆区,全局区,代码区
c++语言内存四区:栈区,堆区,全局区,代码区 栈区:又称为临时区,程序结束操作系统会自动回收内存。特点是内存提取速度快,但是容量有限,例如 int a=10; int buf[100];都属于栈区定义的。 堆区:c语言通过malloc/free函数申请和释放堆区内存,c++语言通过new/delete操作符申请和释放堆区内存,程序结束需要程序员手动释放内存,否则会原创 2017-05-13 23:30:49 · 685 阅读 · 0 评论 -
C++类和结构体的区别
1:类属于C++引入的概念,是对属性和方法进行的抽象。结构体是c语言就有的概念。2:类在堆区分配内存空间,结构体在栈区分配内存。3:类有构造函数和析构函数,结构体没有构造函数和析构函数。4:类可以继承和被继承,实现多态。但是结构体不可以继承自另一个结构体或被继承,但和类一样,可以继承自接口。5:类默认数据类型private,结构体默认数据类型为public。6:c里面的结构体只原创 2017-05-13 23:56:15 · 532 阅读 · 0 评论 -
c/c++ 中const专题
C/C++中的const专题 1、 const基础知识(用法、含义、好处) int main(){const int a;int const b; const int *c;int * const d;const int * const e ; return 0;} Int func1(const )初级理解:co转载 2017-05-14 14:53:32 · 206 阅读 · 0 评论 -
c++引用专题
引用专题1引用(普通引用) 0变量名回顾 变量名实质上是一段连续存储空间的别名,是一个标号程序中通过变量来申请并命名内存空间通过变量的名字可以使用存储空间问题1:对一段连续的内存空间只能取一个别名吗? 1、 引用是C++的概念,属于C++编译器对C的扩展问题:C中可以编译通过吗?int main(){int a = 0转载 2017-05-14 14:57:18 · 217 阅读 · 0 评论 -
C++对C的扩展
C++对C的扩展函数相关专题内联函数 C++中的const常量可以替代宏常数定义,如:const int A = 3; è #define A 3C++中是否有解决方案替代宏代码片段呢?(替代宏代码片段就可以避免宏的副作用!)C++中推荐使用内联函数替代宏代码片段C++中使用inline关键字声明内联函数转载 2017-05-14 15:18:16 · 222 阅读 · 0 评论 -
操作符重载前置和后置的区别与实现
为了区别前置++和后置++,c++编译器默认前置++,对后置++添加了占位符来加以区分。例如 用成员函数实现操作符重载,分别实现前置++和后置++。class Complex{private:int a;int b;public:Complex(int a = 0, int b = 0){this->a = a;this->b = b;}vo原创 2017-05-14 16:09:17 · 715 阅读 · 0 评论 -
c++操作符重载实现
为什么要用操作符重载首先我们看一个例子。class Complex{public:int a;int b;public:Complex(int a = 0,int b=0){this->a = a;this->b = b;}void print(){cout cout }}; void main01(){原创 2017-05-14 15:44:54 · 262 阅读 · 0 评论 -
c++ this 指针
1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。 例如原创 2017-05-15 10:38:49 · 186 阅读 · 0 评论 -
字符串操作
字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字原创 2017-05-15 10:40:45 · 274 阅读 · 0 评论 -
c++字符串
C++支持两种字符串:C风格字符串和string。之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。此外,CStr转载 2017-05-29 18:26:45 · 192 阅读 · 0 评论 -
C++类的函数重载和函数重写探究
1.首先介绍函数三要素,函数重载,函数重写的概念 . 函数三要素:函数名,返回类型,函数参数。 . 函数重载:两个函数的函数名相同,函数参数不同,函数体不同。. 函数重写:函数名,返回类型,函数参数都必须相同,但函数体可以实现不同功能。2.C++类的函数重载(1)必须在同一个类中进行;(2)子类无法重载父类的函数,父类同名函数将被名称覆盖;(3原创 2017-06-16 16:15:30 · 379 阅读 · 0 评论 -
从内存的角度理解c++类的属性和方法
C++语言内存四区的概念:栈区,堆区,全局区,代码区。定义一个空类。Void myClass{Private:Protected:Public:};Void main(){Printf(“%d”,sizeof(myClass ));}发现一个空类占用一个字节。定义两个类A1,A2,分别求A1和A2占多少个字节。class C1{pub原创 2017-05-13 23:47:19 · 1852 阅读 · 1 评论 -
父类构造函数不能实现多态
class AA{public:AA(int a= 0){this->a = a;print(); //在构造函数里面能实现多态吗?}virtual void print(){cout}protected:int a ;};class BB : public AA{public:BB(int a= 0, int b原创 2017-06-17 21:14:07 · 467 阅读 · 0 评论 -
纯虚函数与抽象类
1、纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本;2、纯虚函数为各派生类提供一个公共界面(接口的封装设计);3、纯虚函数说明形式:virtual 类型 函数名(参数表)= 0 ;4、一个具有纯虚函数的基类称为抽象类。注:(1)绝大多数面向对象语言都不支持多继承;(2)绝大多数面向对象语言都支持接口的概念;(3)C++中没转载 2017-06-18 11:04:36 · 299 阅读 · 0 评论 -
函数指针
函数指针语法:函数名称就代表函数的入口地址 函数名称本身就是一个指针,可以把函数名赋给一个函数指针,通过函数指针进行函数调用。值得注意的是:函数名和对函数名取地址是一样的。C语言通过typedef为函数类型重命名,函数指针的3种定义方式:1、用函数类型 定义一个函数指针//定义一个函数类型 typedef int Func(int);int test(int a){原创 2017-06-18 17:15:26 · 354 阅读 · 0 评论