运算符优先级从高至低 优先级 操作符 描述 例子 结合性 1 ()[]->.::++-- 调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作用域操作符后置自增操作符后置自减操作符 (a + b) / 4;array[4] = 2;ptr->age...
分类:
编程语言 时间:
2015-03-29 17:44:13
阅读次数:
136
1、指针的初始化指针初始化时,“=”的右操作数必须为内存中数据的地址,不能够是变量,也不能够直接用整型地址值(可是int*p=0;除外,该语句表示指针为空)。此时,*p仅仅是表示定义的是个指针变量,并没有间接取值的意思。比如:int a = 25;int *ptr = &a;int b[10];in...
分类:
编程语言 时间:
2015-03-29 16:29:15
阅读次数:
140
C++智能指针主要是在普通指针的基础上封装了一层,使得使用者对指针的使用更加方便和放心,在使用的过程中不用担心指针因为释放问题而导致的异常。在C++11中,智能指针主要有三种:shared_ptr ptr, unique_ptr ptr, weak_ptr ptr;
shared_ptr ptr的初始化可以通过以下几种方式:
1)shared_ptr ptr = m...
分类:
编程语言 时间:
2015-03-29 01:54:51
阅读次数:
215
当类对象被 shared_ptr 管理时,需要在类自己定义的函数里把当前类对象作为参数传给其他函数时,这时需要传递一个 shared_ptr ,否则就不能保持 shared_ptr 管理这个类对象的语义(因为有一个 raw pointer 指向这...
分类:
其他好文 时间:
2015-03-28 23:20:17
阅读次数:
362
何时我们需要智能指针?
资源所有权的共享
共享所有权是指两个或多个对象需要同时使用第三个对象的情况。这第三个对象应该如何(或者说何时)被释放?为了确保释放的时机是正确的,每个使用这个共享资源的对象必须互相知道对方,才能准确掌握资源的释放时间。从设计或维护的观点来看,这种耦合是不可行的。更好的方法是让这些资源所有者将资源的生存期管理责任委派给一个智能指针。当没有共享者存在时,智能指针就可以...
分类:
其他好文 时间:
2015-03-28 14:26:28
阅读次数:
170
何时我们需要智能指针?
资源所有权的共享
共享所有权是指两个或多个对象需要同时使用第三个对象的情况。这第三个对象应该如何(或者说何时)被释放?为了确保释放的时机是正确的,每个使用这个共享资源的对象必须互相知道对方,才能准确掌握资源的释放时间。从设计或维护的观点来看,这种耦合是不可行的。更好的方法是让这些资源所有者将资源的生存期管理责任委派给一个智能指针。当没有共享者存在时,智能指针就可以...
分类:
其他好文 时间:
2015-03-28 14:24:17
阅读次数:
121
智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游戏开发中,往往不会用到shared_ptr。
在cocos2d-x3.2以及更高的版本中,cocos...
分类:
其他好文 时间:
2015-03-28 13:04:33
阅读次数:
750
这个问题是我和同学讨论时,产生的思考,后来做的实验性解答。
先来看一段小程序1. #include
2. using namespace std;
3.
4. int main()
5. {
6. int a[5]={1,2,3,4,5};
7. int *ptr=(int *)(&a+1);
8. cout<<*(a+1)="...
分类:
编程语言 时间:
2015-03-21 15:37:00
阅读次数:
186
成员访问运算符
点运算符“.”和箭头运算符“->”,都可以用于访问成员,其中点运算获取类对象的一个成员,箭头运算获取指针指向对象的成员。表达式ptr->men等价于(*ptr).mem:
string s = “hello”, *p = &s;
auto n = s.size(); //获取string对象的成员
n = (*p).si...
分类:
编程语言 时间:
2015-03-21 09:55:06
阅读次数:
234
NULL 指针#include using namespace std;int main(){ //如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。 int *ptr = NULL; cout using nam...
分类:
其他好文 时间:
2015-03-20 20:11:30
阅读次数:
159