C++学习
文章平均质量分 60
唐唐唐唐人
IT界冉冉升起的一只小菜鸟,请各位大牛们多多指教~~
展开
-
const常量与define宏定义的区别
#define RADIUS 100;const float RADIUS = 100;(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开转载 2017-01-10 16:31:00 · 326 阅读 · 0 评论 -
用weak_ptr解决shared_ptr的环形引用问题
shared_ptrshared_ptr是C++11增加的智能指针,它的内部有一个引用计数的功能,能够允许多个智能指针指向同一个对象,每当多一个指针指向改对象时,指向该对象的所有智能指针内部的引用计数加1,每当减少一个智能指针指向对象时,引用计数会减1,当计数为0的时候会自动的释放资源。 不过使用它要避免一个环形引用的问题,看如下代码:#include <iostream>#include <m原创 2017-04-12 16:41:52 · 5629 阅读 · 1 评论 -
C++中的new、operator new与placement new
原文地址:http://www.cnblogs.com/luxiaoxun/archive/2012/08/10/2631812.htmlC++中的new/delete与operator new/operator deletenew operator/delete operator就是new和delete操作符,而operator new/operator delete是函数。new opera转载 2017-04-12 11:14:43 · 269 阅读 · 0 评论 -
C++右值引用和转移语义
右值引用和转移语义 本文尝试着解释何为右值引用和转移语义以及使用它们具有优势,并提供相关案例分析。定义左值和右值首先我们先来理解一下什么是左值和右值。 C/C++语言中可以放在赋值符号左边的变量,左值表示存储在计算机内存的对象,左值相当于地址值。右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真实值,右值相当于数据值。C/C++语言中可以放在赋值符转载 2017-04-12 10:31:33 · 414 阅读 · 0 评论 -
几种垃圾回收机制
参考 http://www.2cto.com/kf/201110/108419.html1.引用计数算法引用计数(Reference Counting)算法是每个对象计算指向它的指针的数量,当有一个指针指向自己时计数值加1;当删除一个指向自己的指针时,计数值减1,如果计数值减为0,说明已经不存在指向该对象的指针了,所以它可以被安全的销毁了。引用计数的明显缺点:无法处理环形引用遍历所有的栈去解决算法转载 2017-04-10 09:49:16 · 509 阅读 · 0 评论 -
详解C++虚函数与虚继承
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特性,熟悉C++的人对此应该不会有太多异议。C语言提供的struct,顶多算得上对数据的简单封装,而C++的引入把struct“升级”为class,使得面向对象的概念更加强大。继承机制解决了对象复用的问题,然而多重继承又会产生成员冲突的问题,虚继承在我看来更像是一种“不得已”的解决方案。多态让对象具有了运行时特性,并且它是软件设计复用的本质,虚转载 2017-03-31 09:54:19 · 513 阅读 · 0 评论 -
《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记
深度探索C++对象模型(Inside The C++ Object Model )》学习笔记第一章 关于对象使用class封装之后的布局成本: class并没有增加成本,data members直接内含在每一个class object之中,就像C struct一样。而member functions虽然被包含在class的声明之内,但是不出现在Object之中。每一个non-inline func原创 2017-04-09 14:25:28 · 499 阅读 · 0 评论 -
C++STL里面7个常用容器的比较
1.STL容器分类:STL的容器可以分为以下几个大类: 一 顺序(序列)容器, 有vector, list, deque, string,stack( 适配器类), queue( 适配器类), priority queues( 适配器类)二 关联容器, 有set, multiset, map, multimap, bitset,hash_set, hash_map, hash_m转载 2017-03-23 14:18:11 · 2213 阅读 · 0 评论 -
C++中的static关键字的总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include <iostream.h转载 2017-03-09 12:06:13 · 178 阅读 · 0 评论 -
C++:private继承与public继承
1 private, public, protected 访问标号的访问范围private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。注:友转载 2017-02-04 11:05:57 · 327 阅读 · 0 评论 -
C++函数指针、函数对象与C++11 function对象对比分析
1.函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针主要由以下两方面的用途:调用函数和用作函数参数。函数指针的声明方法数据类型标志符 (指针变量名) (形参列表); 一般函数的声明为: int func ( int x ); 而一个函数指针的声明方法为: int (*func) (int x); 前面转载 2017-01-19 20:49:27 · 393 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即默认转载 2017-01-18 16:33:50 · 217 阅读 · 0 评论 -
堆内存和栈内存详解
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)—由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap)— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表3、全局区(静态区)(static)—,全局变量和静态变量的存转载 2017-01-18 16:05:16 · 262 阅读 · 0 评论 -
C++中NULL和nullptr的区别
好久没写博客了~~~~ 嗯,直接上代码吧:#include <iostream>using namespace std;void func(void* t){ cout << "func1" << endl;}void func(int i){ cout << "func2" << endl;}int main(){ func(NULL); func(n原创 2017-07-13 10:52:30 · 5565 阅读 · 0 评论