侯捷C++学习笔记:对象的创建和销毁

概述 本文会记录CPP中对象的创建和销毁的过程中的细节 big three函数 拷贝构造函数 拷贝赋值函数 析构函数 用途:这三个函数是在类中包含了指针的情况下使用的。 当有一个成员变量是一个指针时,就有了给这个变量赋值的问题。如果这个赋值需要深拷贝,那么就需要申请内存空间。这样在析构函数中就需要对指针进行delete。 这个成员变量可以是在对象构造函数...

侯捷C++学习笔记:Object Model

composition & delegate & inherit 的构造和析构顺序 如果有以下代码: class A { public: A(); ~A(); Foo(); } class B { public: B(); ~B(); } class C:A { public: C(); ~C(); pri...

侯捷C++学习笔记:Reference

本质 通过指针实现,所以本质就是指针 意义 是某个变量的代表,因此下面的代码中,x的值为5。在给x赋值后i和x都是6。 int i = 5; int& x = i; x = 6; 编译器的一些做法 以一下代码为例,如果有一个变量b是a的引用,那么有sizeof(a) == sizeof(b)而且&a == &b。 上面也说了引用...

侯捷C++学习笔记:偏特化

什么是偏特化 泛化(泛型)的反义 分为个数的偏特化和范围的偏特化 数量偏特化 举个例子,如果有如下class的定义,第一个class的就是泛型的,而第二个class,也是两个参数,但是第一个参数是个确定类型的,第二个是泛型的。这样就叫个人的偏特化。这固定类型的位置必须是从左至右的,不能跳着写。 template<typename T, typename U>...

侯捷C++学习笔记:类型转换

自己转换为别的类型 做法:使用operator关键字,无需返回值,函数名称就是返回值。如有需要加上const修饰。 Class A { Public: A(int arg1, int arg2) : x(arg1), y(arg2) {} operator double() const { return (double)...

侯捷C++学习笔记:面向对象

Composition 组合 其实就是一个类(Container)中包含了另一个类的实例(Component),注意是实例。 delegate 组合的一种 但是包含的是一个类的引用(reference)。 组合的使用 用这样的方式可以做出adapter模式,比如A功能很多但是如果只要暴露出一部分,可以用B来包含A,然后只在B中定义一些方法,这些方法都是直接调...

侯捷C++学习笔记:基础

1.类 带指针的类 不带指针的类:大多数不需要析构函数 2.定义头文件 防御式代码,避免多次include时重复导入 #ifndef _COMPLEX_ #define _COMPLEX_ ... #endif 头文件布局: 前置声明 类声明 class head class ...

每天一点UWA:第二十周

小结&新的开始 从今年的7月29号发布第一周的笔记算起不知不觉已经二十周了,当时的想法也很简单就是下定决心读完当时算下来是168篇文章。5个月过去了,在写这篇的文章的时候基本上已经通读完了所有厚积薄发版块的关于unity的文章,真的感觉这是我这些年来做的最有毅力的一件事情。可以说在这二十周里面对于unity的理解尤其是图形学上学到了很多东西,而且也学会了很多优化的理论和别人实践...

每天一点UWA:第十九周

AssetBundle 在移动平台上打AssetBundle时,为了控制包体大小,会开启PlayerSettings中的Optimize Mesh Data,对网格文件使用范围比较多的资源有较好的优化效果。 然而这带来了一个问题,就是在部分使用网格的特效中,美术会对模型上一些顶点做特殊处理,以达到一种网格遮罩的效果,而这个设置需要用到网格的顶点色。然而在开启Optimize Mesh Dat...

Unity特效学习:动画

Unity动画创建 选中物体后按Ctrl+6可以开启动画编辑器。 点击Add Property可以选中你要编辑的物体对象上的属性。可以看到几乎物体上所有组件的可编辑的属性都可以通过动画来编辑。这也意味着很多东西不需要编码来完成,比如你要做物体transform的变化、要做shader属性的变化等。以往可能需要进行代码编辑,在update或者某个corroutine...