C++基础
cherish_2012
这个作者很懒,什么都没留下…
展开
-
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>using namespace std;class CExample {private: int a;pub转载 2014-05-06 20:02:52 · 452 阅读 · 0 评论 -
C++类静态成员与类静态成员函数
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。 静态数据成员的用途之一是统计有多少个对象实际存在。 静态数据成员不能在类中初始化,实际上类定义只是在原创 2014-06-01 17:23:47 · 513 阅读 · 0 评论 -
C/C++
http://blog.csdn.net/mznewfacer/article/category/911194/2原创 2014-09-02 17:19:28 · 392 阅读 · 0 评论 -
23种设计模式--学习
一,AbstractFactory原创 2014-10-24 00:23:29 · 421 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>using namespace std;class CExample {private: int a;pub转载 2014-11-04 21:11:04 · 411 阅读 · 0 评论 -
C++中字节对齐
在头文件中添加#pragma pack(push,1)和#pragma pack(pop)注意一定要成对出现。例如:#pragma pack(push,1)struct Test{ 。。。。。。;};#pragma pack(pop)原创 2014-12-19 09:47:27 · 435 阅读 · 0 评论 -
C++智能指针、悬垂指针、哑指针、野指针
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷原创 2014-12-23 00:19:46 · 2815 阅读 · 0 评论 -
inline 和 宏定义的区别
inline函数是C++引入的机制,目的是解决使用宏定义的一些缺点。1.为什么要引入内联函数(内联函数的作用) 用它替代宏定义,消除宏定义的缺点。宏定义使用预处理器实现,做一些简单的字符替换因此不能进行参数有效性的检测。另外它的返回值不能被强制转换为可转换的合适类型,且C++中引入了类及类的访问控制,在涉及到类的保护成员和私有成员就不能用宏定义来操作。2.inline相比转载 2015-04-16 15:34:52 · 653 阅读 · 0 评论 -
线程同步(Linux_C++)
线程的同步互斥锁,读写锁,条件变量有两种方式创建在 posix 互斥锁,读写锁,条件变量有两种方式创建.静态方式和动态方式.POSIX定义了三个个宏:PTHREAD_MUTEX_INITIALIZER 来静态初始化互斥锁PTHREAD_COND_INITIALIZER 来静态初始化条件变量PTHREAD_RWLOCK_INITIALIZER 来静态初始转载 2015-09-07 23:51:35 · 571 阅读 · 0 评论 -
Windows API教程文件系统
索引概念简介文件对象文件流文件句柄文件指针文件系统操作 常见 API高级文件操作本讲程序功能列表CreateFile具体参数返回值DeleteFile参数返回值CopyFile、MoveFile、FindFirstFileReadFileGetCurrentDirectory、FindNextFile更多改进学习方法小结本讲程序功能列表转载 2015-10-22 20:23:54 · 1900 阅读 · 0 评论 -
数据结构C++
简介一、数组 1. 静态数组 array 2. 动态数组 2.1. vector 2.2. priority_queue 2.3. deque 2.4. stack 2.5. queue二、单向链表 forward_list三、双向链表 list四、树 1. set 2. multiset 3. map ...转载 2019-07-08 15:38:16 · 262 阅读 · 0 评论 -
指针和const限定符
1、指向const对象的指针const double pi = 3.14;double *ptr = π //error:ptr is a plain pointerconst double *cptr = π //ok:cptr is a pointer to const不能用void *指针保存const对象的地址,而必须使用co转载 2014-06-12 15:09:19 · 426 阅读 · 0 评论 -
C++模板学习
1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.转载 2014-06-12 10:54:30 · 381 阅读 · 0 评论 -
C++将类的成员函数作为回调函数
非静态成员函数不能作为原创 2014-05-07 14:13:02 · 8803 阅读 · 1 评论 -
C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量)
一、动态存储方式与静态存储方式上一节已介绍了变量的一种属性——作用域,作用域是从空间的角度来分析的,分为全局变量和局部变量。变量还有另一种属性——存储期(storage duration,也称生命期)。存储期是指变量在内存中的存在期间。这是从变量值存在的时间角度来分析的。存储期可以分为静态存储期(static storage duration)和动态存储期(dynamic storage转载 2014-03-19 20:07:40 · 2787 阅读 · 1 评论 -
C++各数据类型取值范围(备忘)
各数据类型取值范围 bool型为布尔型,占1个字节,取值0或1。BOOL型为int型,一般认为占4个字节,取值TRUE/FALSE/ERROR。sbyte型为有符号8位整数,占1个字节,取值范围在128~127之间。bytet型为无符号16位整数,占2个字节,取值范围在0~255之间。short型为有符号16位整数,占2个字节,取值范围在-32,76原创 2014-03-13 17:43:22 · 679 阅读 · 0 评论 -
C++类型转换总结
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多转载 2014-07-16 19:41:10 · 335 阅读 · 0 评论 -
c++类中的静态成员函数和静态成员变量
#include #include class Point{public:void output(){ printf("output====\n");}static void init(){ printf("static====\n");}};class Point2{public:原创 2014-06-09 08:52:55 · 468 阅读 · 0 评论 -
C++ sizeof使用
说明:以下代码在VS2008中通过,在32位操作系统下。1. 定义sizeof是一个操作符(operator)。其作用是返回一个对象或类型所占的内存字节数。其返回值类型为size_t。(size_t在头文件stddef.h中定义,它依赖于编译系统的值,一般定义为 typedef unsigned int size_t;)2. 语法sizeof有三种语法形原创 2014-06-11 09:04:55 · 500 阅读 · 0 评论 -
C++库常用函数
1. 标准C++库字符串类std::string的用法begin 得到指向字符串开头的Iteratorend 得到指向字符串结尾的Iteratorrbegin 得到指向反向字符串开头的Iteratorrend 得到指向反向字符串结尾的Iteratorsize 得到字符串的大小length() 和si转载 2014-06-11 09:05:51 · 506 阅读 · 0 评论 -
命名的强制类型转换
++命名的强制类型转换也称作新式类型转换,也是C语言类型转换的一个演进。看一个C语言的类型转换:1char *hopeItWorks = (char *)0x00ff0000;《C++必知必会》一书把该种类型转换描述成“龌龊”,因为这种类型转换相对于C++的类型转换来说力度要大,大到有时你并不清楚具体发转载 2014-05-28 14:33:25 · 636 阅读 · 0 评论 -
std::string类简介
字符串存取 有4种方法可以访问各个字符,其中两种方法使用[]操作符,另外两种方法使用at()方法: reference operator[] (size_type pos);const_reference operator[] (size_type pos) const;reference at (size_type n);const_reference转载 2014-06-13 15:36:07 · 560 阅读 · 0 评论 -
STL无序容器unordered_map、unordered_set
简介很明显,这两个头文件分别是map、set头文件对应的unordered版本。 所以它们有一个重要的性质就是:乱序如何乱序这个unorder暗示着,这两个头文件中类的底层实现----Hash。 也是因为如此,你才可以在声明这些unordered模版类的时候,传入一个自定义的哈希函数,准确的说是哈希函数子(hash function object)。具有相同相同哈希值的元素被放在...转载 2019-07-03 16:28:04 · 1085 阅读 · 1 评论