const

iOS分类底层实现原理小记

廉价感情. 提交于 2020-03-23 02:30:38
摘要:iOS分类底层是怎么实现的?本文将分如下四个模块进行探究分类的结构体编译时的分类分类的加载总结本文使用的runtime源码版本是objc4-680文中类与分类代码如下//类@interfacePerson:NSObject@property(nonatomic,copy)NSString*presonName;@end@implementationPerson-(void)doSomeThing{NSLog(@"Person");}@end//分类@int iOS 分类底层是怎么实现的? 本文将分如下四个模块进行探究 分类的结构体 编译时的分类 分类的加载 总结 本文使用的runtime源码版本是 objc4 - 680 文中类与分类代码如下 //类 @interface Person : NSObject @property (nonatomic ,copy) NSString *presonName; @end @implementation Person - (void)doSomeThing{ NSLog(@"Person"); } @end // 分类 @interface Person(categoryPerson) @property (nonatomic ,copy) NSString *categoryPersonName; @end

QOpenGLFunctions not const correct

我怕爱的太早我们不能终老 提交于 2020-03-23 01:16:11
问题 Assume a QOpenGLFunctions object is a member of a class. Since the gl* methods are not marked const where appropriate, they cannot be invoked in a const method even if they may make no state changes at all. Am I using QOpenGLFunctions wrong? 回答1: It's somewhat philosophical, but I could argue that you're using it "wrong". By making QOpenGLFunctions a member of your class, you're saying that the OpenGL functions are part of your class state. Which they are really not. They are something your

mysql索引深入优化

a 夏天 提交于 2020-03-22 16:58:19
创建 test 测试表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` varchar(10) DEFAULT NULL, `c2` varchar(10) DEFAULT NULL, `c3` varchar(10) DEFAULT NULL, `c4` varchar(10) DEFAULT NULL, `c5` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_test_c1234` (`c1`,`c2`,`c3`,`c4`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into `test` (`id`, `c1`, `c2`, `c3`, `c4`, `c5`) values('1','a1','a2','a3','a4','a5'); insert into `test` (`id`, `c1`, `c2`, `c3`, `c4`, `c5`) values('2','b1','b2','b3','b4','b5'); insert into `test` (`id`, `c1`, `c2`, `c3`, `c4`, `c5`) values('3','c1','c2','c3',

es6---变量声明方式

家住魔仙堡 提交于 2020-03-22 16:57:26
1. 声明一个变量有多少种方式 var, function, let, const, import, class 2. let, const a. 块作用域 (es6引入了块级作用域,所以 let、 const在自己所在的代码块有效 ) b. 不存在变量的提升,且存在死区 c. 不可以重复声明 d. const不变的指针,指针里面的内容可变 3. 变量的解构 let 1. let只在所在的代码块中有效 2. 以前我们需要用IIFE解决的问题 https://blog.csdn.net/u013746071/article/details/80595596 3. 不存在变量声明提升 4. 暂时性死区TDZ //1. let只在所在的代码块中有效 for (var i = 0; i < 10; i++) { } console.log(i); //10 for (let j = 0; j < 10; j++) { } console.log(j); //// Error: j is not define console: //2. 以前我们需要用IIFE解决的问题 for (var i = 0; i < 5; i++) { setTimeout(() => { console.log(i);//输出5次5 }, 0); } for (var k = 0; k < 5; k++) {

作业5-继承和派生

这一生的挚爱 提交于 2020-03-22 16:53:51
1.全面的MyString 输出: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8. ijAl- 9. ijAl-mnop 10. qrst-abcd- 11. abcd-qrst-abcd- uvw xyz about big me take abcd qrst-abcd- 1 /*使程序输出指定结果*/ 2 #include <cstdlib> 3 #include <iostream> 4 using namespace std; 5 int strlen(const char * s) 6 { int i = 0; 7 for(; s[i]; ++i); 8 return i; 9 } 10 11 void strcpy(char * d,const char * s) 12 { 13 int i = 0; 14 for( i = 0; s[i]; ++i) 15 d[i] = s[i]; 16 d[i] = 0; 17 18 } 19 20 int strcmp(const char * s1,const char * s2) 21 { 22 for(int i = 0; s1[i] && s2[i] ; ++i) { 23 if( s1[i] < s2[i] ) 24

c++学习笔记一

我们两清 提交于 2020-03-22 14:54:28
定一个头文件person.h包含类的声明:每行后面的注释是学习过程中的体会与思考 #include<iostream> #ifndef PERSON_H_ #define PERSON_H_ class Person { private: int ID;//只有静态的常量数据成员才可以在类中初始化,与C#不一样 std::string Name; int Age; double Money; char * Address;//定义一个字符串指针成员 static int PersonNum;//定义一个静态变量记录对象的个数,静态变量要在源文件中初始化,如果没初始化会有错误,为什么? public: Person();//默认的构造函数 Person(int id,std::string name,int age,double m,const char* s);//带有参数的构造函数 Person(const Person & s);//定义复制构造函数 Person & operator=(const Person &p);//重载=操作符,实现深度复制 virtual ~Person();//析构函数 virtual void playway();//定义一个虚函数,通过虚函数实现多态 void GetName(); void SetPerson(int id, std:

选择排序

不羁岁月 提交于 2020-03-22 13:09:19
选择排序:遍历数组,依次找出将最小值放入放到遍历开始位置 function selectSort(arr) { const Len = arr.length; const fLen = Len - 1; let minIndex, temp; for (let i = 0; i < fLen; i++) { minIndex = i; for (let j = i + 1; j < Len; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr; } 来源: https://www.cnblogs.com/garfieldzhong/p/12545392.html

vue filters 金额转中文大写

不打扰是莪最后的温柔 提交于 2020-03-22 02:34:08
capitalAmount(amount: any) { // 汉字的数字 const cnNums = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]; // 基本单位 const cnIntRadice = ["", "拾", "佰", "仟"]; // 对应整数部分扩展单位 const cnIntUnits = ["", "万", "亿", "兆"]; // 对应小数部分单位 const cnDecUnits = ["角", "分", "毫", "厘"]; // 整数金额时后面跟的字符 const cnInteger = "整"; // 整型完以后的单位 const cnIntLast = "元"; // 最大处理的数字 const maxNum = 9999999999999999.99; // 金额整数部分 let integerNum; // 金额小数部分 let decimalNum; // 输出的中文金额字符串 let chineseStr = ""; // 分离金额后用的数组,预定义 let parts; if (amount === "") { return ""; } amount = parseFloat(amount); if (amount >= maxNum) { // 超出最大处理数字

对象的扩展

£可爱£侵袭症+ 提交于 2020-03-22 01:18:32
本文为学习笔记; 原文链接 <<<<转载请注明原文出处! 对象( object )是 JavaScript 最重要的数据结构。ES6 对它进行了重大升级,本章介绍数据结构本身的改变 属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同于 const baz = {foo: foo}; 上面代码表明: ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。 下面是另一个例子。 function f(x, y) { return {x, y}; } // 等同于 function f(x, y) { return {x: x, y: y}; } f(1, 2) // Object {x: 1, y: 2} 除了属性简写,方法也可以简写。 const o = { method() { return "Hello!"; } }; // 等同于 const o = { method: function() { return "Hello!"; } }; 下面是一个实际的例子。 let birth = '2000/01/01'; const Person = { name: '张三', /

第四讲:运算符重载

大兔子大兔子 提交于 2020-03-22 00:26:17
针对:ostream & operator <<(ostream & os, const ClassType &object) 说明几点: 1.第一个形参为对ostream对象的引用,在该对象上将产生输出, ostream为非const,因为写入到流会改变流的状态 ;该形参是一个引用,因为 不能复制ostream对象 (在c++中定义的标准输入输出流类istream和ostream,其中拷贝构造函数和赋值操作符函数都被放置在了 private 部分,且只有声明,没有定义)。 2.第二个形参一般应是对要输出的类类型的引用,该形参是一个引用 以避免复制实参,减少一次拷贝 ;它设为const,因为输出一般不会改变该对象,设为const就可以用来输出const对象和非const对象。 3.返回类型是一个ostream引用,它的值通常是输出操作符所操作的ostream对象,首先 因为ostream对象不能复制,所以必须是引用 ;其次引用可以少一次拷贝,提高效率;最后,为了体现连续性,实现连续输出,达到用多个输出操作符操作一个ostream对象的效果,如果不是引用,程序返回的时候就会生成新的临时对象,也就是说,连续的两个<<操作符实际上是针对不同对象的,这就好比cout<<a<<b;与cout<<a;cout<<b;的区别。 来源: https://www.cnblogs.com/wwk510