摘要: 这段代码输出: emplace_backI am being constructing push_back:I am being constructingI am being move!!!!25 0I am destorying0I am destorying25I am destorying3 阅读全文
posted @ 2017-12-30 11:01 vaevaevae 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 析构动作在创建时被捕获,这意味着 1. 虚析构不再是必须。 2. shared_ptr<void> 可以持有任何对象而且能够安全释放。比如 输出 derivethis is derive classthis is base class share_from_this()可以方便在类的内部获得自己的s 阅读全文
posted @ 2017-12-16 10:28 vaevaevae 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 该函数触发的条件: 1、两个物体都必须有碰撞器(Collider)组件; 2、其中一个物体的碰撞器(Collider)的IsTrigger属性必须勾上; 3、最重要的一点,其中一个物体必须有刚体(Rigidbody)组件。如果是一个运动的物体(如子弹)去碰撞一个静止的物体,则刚体(Rigidbody 阅读全文
posted @ 2017-07-16 15:39 vaevaevae 阅读(19704) 评论(0) 推荐(0) 编辑
摘要: 在类中,可以重载operator new和operator delete,就像重载operator=一样。定制operator new/delete可以获得一些好处,比如更快地搜索可分配内存,产生较少的内存碎片。 除非仅分配较小的空间,STL容器使用的一般是堆内存,而堆是多个线程可共享的,所以说ST 阅读全文
posted @ 2016-04-07 13:13 vaevaevae 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 引用的底层实现是通过指针来完成的,但编译器做了一些语言层面上的限制,从而产生了引用这个特性。 引用就是存在之物的另一个名字,它本身不是对象。不存在空引用(定义时就需要初始化),所以某些场合使用引用比指正更高效,因为引用肯定非空,而指针需要判断是不是空指针。 在函数传值时使用引用可以防止产生临时对象。 阅读全文
posted @ 2016-04-05 09:52 vaevaevae 阅读(108) 评论(0) 推荐(0) 编辑
摘要: static最显著的两个作用:在类中修饰成员变量,修饰成员函数。这表示这些成员变量和成员函数是属于类的,不属于某个具体实例。初始化静态成员变量在进入main函数之前进行,且初始化只进行一次(如何建立单例,就是从这里入手)。静态成员函数不可能是虚函数,但可以调用实例方法(静态成员函数接收一个实例,然后 阅读全文
posted @ 2016-04-04 23:02 vaevaevae 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 1 #include<iostream> 2 using namespace std; 3 4 class ba{ 5 public: 6 ba(){cout<<"ba"<<endl;} 7 virtual char* vf() const=0; 8 }; 9 10 class bas:public 阅读全文
posted @ 2016-04-04 22:05 vaevaevae 阅读(164) 评论(0) 推荐(0) 编辑
摘要: private继承的意思是“根据某物实现出”,是一种“has-a”的关系。而不像public继承那样继承了接口,是一种“is-a”的关系。 private继承一般可以通过复合来代替,但也有些情况会比复合更好 1 #include<iostream> 2 using namespace std; 3 阅读全文
posted @ 2016-04-04 12:06 vaevaevae 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 对于第三人称的游戏,主人公身上一般加一个character controller用来控制移动。这时候需要自己模拟重力,让主人公站在地板上。如果用A D控制左右, W S控制前后,那么控制移动代码可以这么写: 使用Input.GetAxis方法获取下列默认轴: "Horizontal" 和"Verti 阅读全文
posted @ 2017-07-16 17:06 vaevaevae 阅读(6396) 评论(0) 推荐(0) 编辑
摘要: 今天在编译别的人写的代码时,出现 missing type specifier - int assumed. Note: C++ does not support default-int的错误。 在网上搜了一下,发现是头文件循环嵌套的问题。 之前一直以为用#ifndef就可以避免这种问题,今天才发现 阅读全文
posted @ 2017-01-02 20:27 vaevaevae 阅读(712) 评论(0) 推荐(0) 编辑
摘要: Mat_<double> temp1(10, 3); Mat_<double> mean1, cov1; temp1(0, 0) = 49; temp1(0, 1) = 7; temp1(0, 2) = 29; temp1(1, 0) = 8; temp1(1, 1) = 19; temp1(1, 阅读全文
posted @ 2016-11-22 16:20 vaevaevae 阅读(2673) 评论(0) 推荐(0) 编辑
摘要: 难点:跟踪前一个节点,正确清除右节点 1 class Solution { 2 public: 3 void flatten(TreeNode* root) { 4 if(root==NULL) 5 return; 6 TreeNode* head=root; 7 stack<TreeNode*> 阅读全文
posted @ 2016-07-28 10:10 vaevaevae 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 这道题目关键是先得到上下两层的起始节点,然后分几种情况分别处理:1.下层节点是上层节点的左子节点,且上层节点的右子节点非空。2.下层节点是上层节点的左子节点且上层节点的右子节点为空,或者下层节点是上层节点的右子节点。3.上层节点没有孩子。 分清楚了情况就简单了。 阅读全文
posted @ 2016-07-28 09:46 vaevaevae 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 这个题比前序遍历难在,当tmp等于NULL时,stack需要不断地弹出节点,直到检查到一个节点,它的右节点不为空而且还没有被遍历过。这个判断条件写出来还是比较难。 当然,另一种巧妙的做法是,用前序遍历(按右根左的顺序)来求得数组,然后把数组做一个翻转就行。 阅读全文
posted @ 2016-07-28 09:35 vaevaevae 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 递归前序遍历比较简单,非递归则需要用栈来设计遍历方法。 注意有栈为空但还未遍历完整棵树的情况,因此判断条件需要判断tmp是否为NULL 阅读全文
posted @ 2016-07-28 09:18 vaevaevae 阅读(173) 评论(0) 推荐(0) 编辑