C++学习之路
Edisonlhz
初入编程,深似海!
展开
-
c++学习之路(泛型算法)
1、算法如何工作原创 2014-07-16 15:32:45 · 330 阅读 · 0 评论 -
函数指针传参和引用传参的区别
先看一段代码class CTest{public: CTest(int a, int b) : m_a(a), m_b(b){}private: int m_a; int m_b;};void fun(CTest* ab){ delete ab;}int main(){ CTest *ab = new CTest(1,2); fun(ab); if (原创 2016-07-15 15:19:10 · 1591 阅读 · 0 评论 -
重载++,--操作符
运算符重载的主要目的是为了让类对象能像普通数据类型一样能够进行加减乘除,自加自减等操作,非常直观方便。现在来回顾C++的自加减(分前置与后置)以及不等号非运算符,赋值运算符的重载。原创 2016-07-19 09:58:11 · 193 阅读 · 0 评论 -
delete和delete[]的区别
一般我们都知道delete和new配套使用,delete[]和new[]配套使用。关于new[]和delete[],我们可以分两种情况:(1)为基本数据类型分配和回收空间;(2)为自定义类型分配和回收空间;可以通过一段代码看清楚它们之间的区别:class T {public: T() { cout << "constructor" << endl; } ~T() { co原创 2016-07-20 10:58:54 · 222 阅读 · 0 评论 -
自动类型转换
1、构造函数转换 如果定义一个构造函数,这个构造函数能把一个类型的对象(或引用)作为它的单个参数,那么这个构造函数允许编译器执行自动类型转换。 class One{public: One(){}};class Two{public: Two(One){}};void fun(Two){}int main(){ One one; fun(o原创 2016-07-21 10:39:22 · 250 阅读 · 0 评论 -
static静态变量的理解
static静态变量的理解静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直 到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释转载 2016-10-09 14:48:51 · 1189 阅读 · 0 评论 -
C++类自动转换
1.当构造函数只接受一个参数时,则该类可以与该参数类型相同的值转换。看下面这个简单的例子:12345678910111213141516// Woo.h file#ifndef WOO_H#define WOO_H class Woo{private: double mm;public: /*expli转载 2016-10-09 15:02:40 · 324 阅读 · 0 评论 -
char *s 和 char s[] 的区别小结
char *s1 = "hello";char s2[] = "hello"; 【区别所在】char *s1 的s1,而指针是指向一块内存区域,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错。char s2[]的s2 是数组对应着一块内存区域,其地址和容量在生命期里不会改变,只有数组的内容可以改变原创 2016-10-09 15:32:46 · 475 阅读 · 0 评论 -
基本序列容器:vector、list和deque
所有基本序列容器完全按照存进去的顺序持有对象。然而,对于不同的基本序列容器,他们的操作效率是不同的,因此如果想要操纵具有某种特点的序列,则应当针对不同的操作类型选择合适的容器。当调用resize()扩展一个序列时,新的元素使用序列内元素类型的默认构造函数,若果它们是内置类型,则使用0作为初始值。调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者原创 2016-10-17 11:01:21 · 307 阅读 · 0 评论 -
C++单例模式的最实用写法
不多说,直接上代码。class NoCopyable{public: NoCopyable(){}private: NoCopyable(const NoCopyable&); NoCopyable& operator=(const NoCopyable&);};class CSingleton : public NoCopyable{public: stati原创 2016-05-17 16:14:24 · 1223 阅读 · 0 评论 -
关联容器存放的是指针时,自定义比较函数模板
struct DereferenceLess{ template bool operator()(PtrType pT1, PtrType pT2)const { return *pT1 < *pT2; }};原创 2014-12-09 17:43:38 · 372 阅读 · 0 评论 -
c++学习之路(const)
const对象只能使用const成员,非原创 2014-07-16 16:30:09 · 322 阅读 · 0 评论 -
C++学习之路(初始化列表)
必须对任何const或引用类型成员以及没有默认构造函数的原创 2014-07-16 22:03:24 · 359 阅读 · 0 评论 -
C++学习笔记之覆盖、重载、多态的区别
覆盖:在基类中定义了一个非虚函数,然后在派生类中又定义了一个同名同参数同返回类型的函数,这就是覆盖了。在派生类对象上直接调用这个函数名,只会调用派生类中的那个。重载:在基类中定义了一个非虚函数,然后在派生类中定义一个同名,但是具有不同的参数表的函数,这就是重载。在派生类对象上调用这几个函数时,用不同的参数会调用到不同的函数,有可能会直接调用到基类中的那个。多态:在基类中定义了一原创 2014-09-17 21:23:36 · 266 阅读 · 0 评论 -
C++ 对象指针
C++中,声明对象指针时,并不调用构造函数的,只是为它分配一个地址,就像int a一样,只是分配一个地址,里面的东西是未知的。MyClass *b;并没有调用它的构造函数,只有MyClass *b = new MyClass才会调用,也就是等于把生成的地址赋给指针。原创 2014-09-14 21:35:46 · 565 阅读 · 0 评论 -
C++学习之路(this指针)
类的成员函数都具有一个隐藏的原创 2014-07-16 16:33:47 · 405 阅读 · 0 评论 -
C++学习之路多态
多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。原创 2014-11-05 23:13:00 · 342 阅读 · 0 评论 -
C++学习之路(vector::clear和vector::erase的区别)
vector::clear()函数的作用是清空容器中的内容,但并不回收内存,但你可以通过一下原创 2014-07-17 21:54:34 · 17288 阅读 · 7 评论 -
侵入式智能指针
智能指针,就是利用对象的析构函数去执行资源释放,很久之前写的关于侵入式智能指针的笔记,今晚把它整理下。 资源共享型的智能指针有两种实现,一种是侵入式,一种是非侵入式。在教材里比较常见的是非侵入式的,它的实现完全放在智能指针模板里,模板类有一个用于保存资源类对象的指针变量,和一个用于记录资源对象使用计数的指针变量,这两个东西是所有的智能指针对象共享的,所以通过指针保存。而侵入式则不同,它的原创 2014-12-22 10:33:57 · 870 阅读 · 0 评论 -
双端队列deque
双端队列deque容器是一种优化了的、在序列两端对元素进行添加和删除操作的基本序列容器。它也允许适度快速地进行随机访问—就像vector一样,它也有一个operator[]操作符,然而,它没有vector的那种把所有的东西都保存在一块连续的内存块中的约束。deque的典型实现是利用多个连续的存储块(同时在一个映射结构中保持对这些块及其顺序的跟踪)。因此,向deque的两端添加和删除元素原创 2016-10-17 11:44:58 · 369 阅读 · 0 评论