Unity学习记录2-事件函数的执行顺序
Unity学习记录2-事件函数的执行顺序 Unity脚本中事件函数的执行顺序 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273using System.Collections;using System.Collections.Generic;using UnityEngine;public class test : MonoBehaviour{ void Awake() { //Awake函数最先执行 } private void OnEnable() { //接下来是OnEnable函数,每当脚本被启用的时候会执行一次 } // Start is called before the first frame update ...
C++学习记录-面向对象-浅拷贝和深拷贝
C++学习记录-面向对象-浅拷贝和深拷贝 一、浅拷贝 浅拷贝,对对象进行简单的复制粘贴操作,会带来一些问题(和在《赋值运算符重载》中的问题一样) 示例: 1234567891011121314151617181920212223242526//创建一个类class chara {public: int* a;public: chara(int t) { a = new int(t); }//有参构造函数 chara(const chara& p) { a = p.a; }//拷贝构造函数 ~chara() { if (a != NULL) { delete a; a = NULL; } }//利用析构函数释放内存,防止内存泄漏}; 123chara p1(10);chara...
C++学习记录-模板-类模板
C++学习记录-模板-类模板 一、 有时候,类中的成员数据类型尚不明确,此时可以使用类模板创建类 template<class 数据类型名称1,class 数据类型名称2> 示例: 123456template<class T1,class T2> class chara{ public: T1 name; T2 age; } 因为name和age的数据类型有可能不相同,要创建两个数据类型名称T1,T2 实例化: 1chara<string,int> p1("神里绫华",18); 类名后要加上模板参数列表,指定数据类型。 类模板没有自动类型推导的使用方式。
C++学习记录-模板-函数模板与普通函数的区别
C++学习记录-模板-函数模板与普通函数的区别和调用规则 一、区别 普通函数调用时可以发生自动类型转换(隐藏式类型转换) 函数模板调用时,如果利用自动类型推导,则不能发生隐式类型转换 模板必须在推导出相同的数据类型时才能使用 如果利用显示指定类型的方式,则可以发生隐式类型转换 二、示例: 123456789101112131415161718192021222324int add(int a,int b){ return a+b;}//这是一个普通函数template<typename T>T add2(T a,T b){ return a+b;}//这是一个函数模板int main(){ int a=10; char b='a'; add(a,b);//正确,char类型的b传入时会转换成int类型(取ASCII码),发生了隐式转换 add2(a,b);//错误,必须推导出相同的数据类型才可以使用 ...
C++学习记录-面向对象-虚函数纯虚函数抽象类
C++学习记录-面向对象-虚函数纯虚函数抽象类 一、虚函数的作用 先来创建一个类: 1234567class chara {public: void print() { cout << "这是角色类" << endl; }}; 再来一个类继承它: 1234567class qyn :public chara {public: void print() { cout << "琪亚娜" << endl; }}; 进行调试: 12345678910void test(chara& a){ a.print();}int main(){ qyn...
C++学习记录-面向对象-同名成员的处理
C++学习记录-面向对象-同名成员的处理 一、 当子类和父类存在同名的成员(属性,方法等)时,直接访问会默认访问子类自己的成员,想要访问继承自父类的成员则要加作用域 子类对象可以直接访问子类的同名成员 子类对象加作用域可以访问到继承自父类的同名成员 子类和父类有同名的函数,子类会隐藏父类的同名函数,加作用域可以访问到 二、 示例: 创建一个类 12345678910111213class chara {public: string name = "角色"; string weapon = "新手武器"; public: void printinfo(int a) { cout << name << endl; cout << weapon << endl; }}; 创建一个类继承自chara 12345678910111213class qyn :public chara {public: string name =...
C++学习记录-面向对象-继承方式
C++学习记录-面向对象-继承方式 一、继承的语法 语法: class 类名 :继承方式 父类 示例: 123class chara :public charactor{ ...
C++学习记录-面向对象-运算符重载6-函数调用运算符即括号重载
C++学习记录-面向对象-运算符重载6-函数调用运算符即括号重载 一、 重载函数调用运算符,即重载括号,可以实现 对象( ) 语法时进行一些操作,即可以像函数一样使用对象 二、语法及示例 语法: 返回值(一般为void) operator()( 参数列表) { 方法 }; 如: 123456void operator()(chara& a){ owner = a.name; a.weap = name; cout << "为" << a.name << "装备" << name << endl;} 示例: 先创建两个类: 1234567891011class chara {public: string name; string weap = "新手武器";public: chara(string a) { name = a; }}; 1234567891011class weapon...
C++学习记录-面向对象-运算符重载5-关系运算符重载
C++学习记录-面向对象-运算符重载5-关系运算符重载 一、意义 重载关系运算符,可以实现类和类之间的比对,如 :==,!= ,> , < 等 二、分析及示例 先创建一个类 12345678class chara {public: string name; string weapon;public: chara(string a, string b):name(a),weapon(b) {}}; 分析: 为实现类和类之间的比对,应重载关系运算符,且返回值类型应为bool 示例代码: 123456789101112131415161718class chara {public: string name; string weapon;public: chara(string a, string b):name(a),weapon(b) {} //在类内实现重载,返回值类型应为bool bool operator==(chara&...
C++学习记录-面向对象-运算符重载4-赋值运算符重载
C++学习记录-面向对象-运算符重载4-赋值运算符重载 一、重载的原因 一般情况下,编译系统会为每个类提供一个默认的赋值运算符,用这个默认的赋值运算符操作类对象时,该运算符会把这个类的所有数据成员都进行一次赋值操作。 但是,当遇到以下情况时程序会报错: 12345678910111213141516171819class level {public: int *lv; //创建一个int型指针属性 public: level(int a) { lv=new int(a); } //构造函数,在堆区开辟一块内存并使指针指向它 ~level() { if (lv != NULL) { delete lv; lv = NULL; } }//析构函数,释放内存}; 12345678void test(){ level l1(20); level l2(18); l2=...






