- 博客(164)
- 资源 (10)
- 收藏
- 关注
原创 CRT显示器
CRT显示器简介 CRT显示器学名为“阴极射线显像管”,是一种使用阴极射线管(Cathode Ray Tube)的显示器。主要有五部分组成:电子枪(Electron Gun)、偏转线圈(Deflection coils)、荫罩(Shadow mask)、高压石墨电极和荧光粉涂层(Phosphor)及玻璃外壳。它是应用最广泛的显示器之一,CRT纯平显示器具有可视角度大、无坏点、色彩还原度高、色度均
2017-07-31 22:49:30 2713
原创 常去的博客列表
记录常去的博客列表http://blog.ibireme.com YYKit 大神https://onevcat.com/#blog 王巍 猫神http://blog.devtang.com 唐巧http://blog.sunnyxx.com sunnyxx 的技术博客http://www.jianshu.com/u/96a14318a4de iOS程序犭袁http://kittenya
2017-07-31 22:39:41 809
原创 40、不一样的C++系列--函数异常声明
函数异常声明首先来看一段代码:#include <iostream>#include <string>using namespace std;int func(int i, int j) throw(int, char){ if( (0 < j) && (j < 10) ) { return (i + j); } else {
2017-07-31 22:22:44 1999
转载 OpenGL ES 着色器(shader)介绍
ShaderShader其实就是一段执行在GPU上的程序,此程序使用OpenGL ES SL语言来编写。它是一个描述顶点或像素特性的简单程序。在opengles中常用的shader有两种:vertex shader和fragment shader。Geometry Shader(几何着色器)是继Vertex Shader和Fragment Shader之后,由Shader Model 4引入的新的着
2017-06-27 11:12:54 1741
转载 iOS图形编程的三种API
这些api包含的绘制操作都在一个图形环境中进行绘制。一个图形环境包含绘制参数和所有的绘制需要的设备特定信息,包括屏幕图形环境、offscreen 位图环境和PDF图形环境,用来在屏幕表面、一个位图或一个pdf文件中进行图形和图像绘制。在屏幕图形环境中进行的绘制限定于在一个UIView类或其子类的实例中绘制,并直接在屏幕显示,在offscreen位图或PDF图形环境中进行的绘制不直接在屏幕上显示。UI
2017-06-27 00:11:53 2657
原创 Quartz2D和CoreGraphic的关系
1.Quartz 2D是什么?Quartz 2D以PDF的规范为基础的图形库,用来绘制二维文字和图形,允许相同的绘图指令在任何装置上,使用可以得到的最佳分辨率,产生相同的输出.2.Quartz2D能做什么?Quartz 2D API可以实现许多功能,如基于路径的绘图、透明度、阴影、颜色管理、反锯齿、PDF文档生成和PDF元数据访问等3.Quartz2D和CoreGraphic什么关系Qua
2017-06-26 23:51:51 1507
原创 QuartzCore框架简介
QuartzCore框架iOS设备给用户视觉反馈其实都是通过QuartzCore框架来进行的,说白了,所有用户最终看到的显示界面都是图层合成的结果,而图层即是QuartzCore中的CALayer。通常我们所说的视图即UIView,并不是直接显示在屏幕上,而是在创建视图对象的时候视图对象会自动创建一个层,而视图对象把要显示的东西绘制在层上,待到需要显示时硬件将所有的层拷贝,然后按Z轴的高低合成最终的
2017-06-25 23:18:08 3057
原创 39、不一样的C++系列--类型识别
类型识别在面向对象中可能出现下面的情况 基类指针指向子类对象基类引用成为子类对象的别名//Base* Base& 静态类型//Derived 动态类型Base* p = new Derived();Base& r = *p;类型区别:静态类型 变量(对象)自身的类型动态类型 指针(引用)所指向对象的实际类型void test(Base* b){ //危险的转换方式
2017-06-25 11:58:40 637
原创 38、不一样的C++系列--C++的异常处理
C++的异常处理异常处理介绍C++内置了异常处理的语法元素 try … catch …try语句处理正常代码逻辑catch语句处理异常情况try语句中的异常由对应的catch语句处理语法:try{ double r = divide(1, 0);}catch(...){ cout << "Divided by zero..." << endl;}C++通过thr
2017-06-25 10:27:46 838
原创 37、不一样的C++系列--C语言异常处理
C语言异常处理异常的概念异常的说明 程序在运行过程中可能产生异常异常(Exception)与Bug的区别 异常是程序运行时可预料的执行分支Bug是程序中的错误,是不被预期的运行方式异常(Exception)和Bug的对比: 异常 运行时产生除0的情况需要打开的外部文件不存在数组访问时越界Bug 使用野指针堆数组使用结束后未释放选择排序无法处理长度为0的数组异常处理C语言
2017-06-25 08:40:12 959
原创 36、不一样的C++系列--单例类模板
单例类模板对于单例模式,我们都已经很熟悉了,这里我们来亲手制作一个单例类模板:目标:某些类在整个系统生命期中最多只能有一个对象存在(Single Instance)要控制类的对象数目,必须对外隐藏构造函数思路: 将构造函数的访问属性设置为private定义instance并初始化为NULL当需要使用对象时,访问instance的值 空值:创建对象,并用instance标记非空值:返回
2017-06-24 22:30:26 954
原创 35、不一样的C++系列--智能指针
智能指针智能指针是现代C++开发库中最重要的类模板之一,也是C++中自动内存管理的主要手段,能够在很大程度上避开内存相关的问题。STL中的智能指针auto_ptr生命周期结束时,销毁指向的内存空间不能指向堆数组,只能指向堆对象(变量)一片堆空间只属于一个智能指针对象多个智能指针对象不能指向同一片堆空间示例:#include <iostream>#include <string>#inc
2017-06-24 19:52:53 658
原创 34、不一样的C++系列--数组类模板
数组类模板首先先了解一个小知识点: 模板参数可以是数值型参数(非类型参数),例如这样:template<typename T, int N>void func(){ //使用模板参数定义局部数组 T a[N];}//使用func<double, 10>();这种数值型模板参数也有很多限制:变量不能作为模板参数浮点数不能作为模板参数类对象不能作为模板参数……..本
2017-06-24 18:07:57 1175
原创 33、不一样的C++系列--类模板与特化
类模板类模块的概念和意义在C++中有这样一些类:主要用于存储和组织数据元素类中数据组织的方式和数据元素的具体类型无关如:数组类,链表类,Stack类,Queue类等C++中将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只关注类所需要实现的功能。所以C++中的类模板是这样的:以相同的方式处理不同类型的数据在类声明前使用template进行标识< typename T >用
2017-06-24 10:25:35 984
原创 32、不一样的C++系列--函数模板
函数模板泛型编程首先考虑一个问题:c++中有几种交换变量的方法?1、宏代码块:#define SWAP(t, a, b) \do \{ \ t c = a; \ a = b; \ b = c; \
2017-06-23 22:35:45 1078
原创 31、不一样的C++系列--多重继承
多重继承C++支持编写多重继承的代码 一个子类可以拥有多个父类子类拥有所有父类的成员变量子类继承所有父类的成员函数子类对象可以当作任意父类对象使用多重继承的语法规则//多重继承的本质与单继承相同class Derived : public BaseA, public BaseB, public BaseC{
2017-06-23 16:00:32 910
原创 30、不一样的C++系列--抽象类和接口
抽象类和接口抽象类面向对象中的抽象类可用于表示现实世界中的抽象概念是一种智能定义类型,而不能产生对象的类只能被继承并重写相关函数直接特征是相关函数没有完整的实现Shape是现实世界中各种图形的抽象概念因此: 程序中必须能够反映抽象的图形程序中通过抽象类表示图形的概念抽象类不能创建对象,只能用于继承纯虚函数C++语言中没有抽象类的概念C++中通过纯虚函数实现抽象类纯虚函数是指
2017-06-22 09:57:09 664
原创 29、不一样的C++系列--对象模型分析
对象模型分析C++对象模型首先来说一说class的本质:class是一种特殊的struct 在内存中class依旧可以看作变量的集合class与struct遵循相同的内存对齐规则class中的成员函数与成员变量是分开存放的 每个对象有独立的成员变量所有对象共享类中的成员函数然后再来看一个问题:class A{ int i; int j; char c;
2017-06-21 11:48:10 720
原创 28、不一样的C++系列--继承与多态
继承与多态父子间的同名冲突首先来看一段代码:#include <iostream>#include <string>using namespace std;class Parent{public: int mi;};class Child : public Parent{public: int mi;};int main(){ Child c; //这里
2017-06-20 10:27:26 734
原创 27、不一样的C++系列--继承的构造与析构
继承的构造与析构子类对象的构造子类中可以定义构造函数子类构造函数 必须对继承而来的成员进行初始化 直接通过 初始化列表 或者 赋值的方式 进行初始调用父类构造函数 进行初始化父类构造函数在子类中的调用方式 默认调用 适用于无参构造函数和使用默认参数的构造函数显示调用 通过 初始化列表 进行调用适用于所有父类构造函数 父类构造函数的调用class Child : public
2017-06-20 07:10:27 729
原创 26、不一样的C++系列--继承的基础知识
继承继承的概念类之间的两大关系:组合和继承:组合关系的特点: 将其它类的对象作为自己的成员使用当前类的对象与成员对象的声明期相同成员对象在用法上与普通对象完全一致组合关系的代码示例:class Memory{public: Memory() { cout << "Memory()" << endl; } ~Memory() {
2017-06-18 17:41:57 882
原创 25、不一样的C++系列--类型转换函数
类型转换函数基础类型转换标准数据类型之间会进行隐式的类型安全转换转换规则如下: (char -> short)-> int -> unsigned int -> long -> unsigned long -> float -> double举个例子:#include <iostream>#include <string>using namespace std;int main()
2017-06-18 14:54:25 599
原创 24、不一样的C++系列--i++和++i
前置操作符和后置操作符首先呢,我们来思考一个问题: //下面的代码有没有区别?为什么? i++; // i的值作为返回值,i 自增 1 ++i; // i自增 1, i 的值作为返回值如果从原生语义上讲,不一样,但是是在单条语句内,运算结果都一样。并且如果在单条语句内,编译器会进行优化,有的是作为原生语义来进行编译,有的是直接作为同一意思来进行的。所以: 现代编译器产品会
2017-06-15 09:03:15 745
原创 23、不一样的C++系列--智能指针
智能指针内存泄露(臭名昭著的BUG) 动态申请堆空间,用完后不归还C++语言中没有垃圾回收的机制指针无法控制所指堆空间的生命周期就像这样:int main(){ for(int i=0; i<5; i++) { Test* p = new Test(i); cout << p->value() << endl; } return
2017-06-12 09:35:25 679
原创 22、不一样的C++系列--函数调用操作符的重载
函数调用操作符的重载函数调用操作符(()) 只能通过类的成员函数重载可以定义不同参数的多个重载函数用法:Type operator () (){ return Type;}函数调用操作符的意义 函数调用操作符(())是可重载的函数调用操作符只能通过类的成员函数重载函数调用操作符可以定义不同参数的多个重载函数函数对象用于在工程中取代函数指针这里举个例子:#include
2017-06-12 09:13:55 736
原创 21、不一样的C++系列--数组操作符的重载
字符串类的兼容性存在的一些历史遗留问题C语言不支持真正意义上的字符串C语言用字符数组和一组函数实现字符串操作C语言不支持自定义类型,因为无法获取字符串类型C++语言直接支持C语言的所有概念C++语言中没有原生的字符串类型C++标准提供了字符串类(string类)string直接支持字符串连接string直接支持字符串的大小比较string直接支持子串查找和提取string直接支持字
2017-06-12 08:45:05 576
原创 20、不一样的C++系列--操作符重载
操作符重载C++中的重载能够扩展操作符的功能操作符的重载以函数的方式进行本质: 用特殊形式的函数扩展操作符的功能使用: 通过 operator 关键字可以定义特殊的函数operator 的本质是通过函数重载操作符语法:Type operator Sign(const Type& p1, const Type& p2){ Type ret; return ret;}
2017-06-11 16:49:24 467
原创 19、不一样的C++系列--友元
友元的介绍什么是友元?友元是C++中的一种关系友元关系发生在函数与类之间或者类与类之间友元关系是单项的,不能传递友元的用法在类中以 friend 关键字声明友元类的友元可以是其它类或者具体函数友元不是类的一部分友元不受类中访问级别的限制友元可以直接访问具体类的所有成员友元的语法在类中用 friend 关键字对函数或类进行声明class Point{ double x;
2017-06-11 16:08:05 581
原创 18、不一样的C++系列--二阶构造模式
构造函数回顾关于构造函数的回顾 类的构造函数用于对象的初始化构造函数与类同名并且没有返回值构造函数在对象定义时自动被调用但是有没有发现,还是存在一些问题?1、如何判断构造函数的执行结果呢?2、在构造函数中执行return 语句会发生什么?3、构造函数执行结束是否意味着对象构造成功?就像这样:class Test{ int mi; int mj; bool mSt
2017-06-11 15:28:12 961
原创 17、不一样的C++系列--静态成员
静态成员变量在C++中可以定义静态成员变量静态成员变量属于整个类所有静态成员变量的生命期不依赖于任何对象可以通过类名直接访问公有静态成员变量所有对象共享类的静态成员变量可以通过对象名访问公有静态成员变量静态成员变量的特性在定义时直接通过static关键字修饰静态成员变量需要在类外单独分配空间静态成员变量在程序内部位于全局数据区语法规则:Type ClassName::VarName
2017-06-11 13:58:52 638
原创 16、不一样的C++系列--const对象与类成员的知识点
const对象const关键字能够修饰对象const修饰的对象为只读对象只读对象的成员变量不允许被改变只读对象是编译阶段的概念,运行时无效C++中的const成员函数const对象只能调用const的成员函数const成员函数中只能调用const成员函数const成员函数中不能直接改写成员变量的值const成员函数的定义:Type ClassName::function(Type p
2017-06-11 12:34:56 498
原创 15、不一样的C++系列--临时变量
临时变量首先看一段代码:#include <stdio.h>class Test { int mi;public: Test(int i) { mi = i; } Test() { Test(0); } void print() { printf("mi = %d\n", mi); }};i
2017-06-11 11:39:56 530
原创 14、不一样的C++系列--对象销毁
对象的销毁一般而言,需要销毁的对象都应该做清理解决方案 为每个类都提供一个public的free函数对象不再需要时立即调用free函数进行清理就比如这样:class Test{ int* p ;public: Test() {p = new int;} void free() {delete p;}}存在的问题 free只是一个普通的函数,必须显示的调用
2017-06-11 10:46:53 551
原创 13、不一样的C++系列--对象构造顺序
局部对象对于局部对象 当程序执行流到达对象的定义语句时进行构造举个栗子: int i = 0; Test a1 = i; while( i < 3 ) { Test a2 = ++i; } if( i < 4 ) { Test a = a1; } else { Test a
2017-06-11 10:26:31 444
原创 12、不一样的C++系列--初始化列表
类成员的初始化首先来看一段代码:#include <stdio.h>class Test{private: const int ci;public: Test() { ci = 10; } int getCI() { return ci; }};int main(){ Test t;
2017-06-11 10:01:38 461
原创 11、不一样的C++系列--对象的构造
对象的初始化先上一段代码:#include <stdio.h>class Test{private: int i; int j;public: int getI() { return i; } int getJ() { return j; }};Test gt;int main(){ printf("gt.i = %d\n", gt.getI());
2017-06-10 00:35:28 851
原创 10、不一样的C++系列--类的真正形态
类的关键字struct 在C语言中已经有了自己的含义,必须继续兼容在C++中提供了新的关键字class用于类定义class和struct的用法是完全相同的那 struct 和 class 有什么区别呢?在用struct定义类时,所有成员的默认访问级别为public在用class定义类时,所有成员的默认访问界别为private例如这样:struct A{ //defualt to
2017-06-10 00:33:49 730
原创 9、不一样的C++系列--类与封装
类的封装类通常分为以下两个部分类的实现细节类的使用方式当使用类时,不需要关心其实现细节当创建类时,才需要考虑其内部实现细节封装的基本概念并不是类的每个属性都是对外公开的而一些类的属性是对外公开的必须在类的表示法中定义属性和行为的公开级别C++中类的封装成员变量:C++中用于表示类属性的变量成员函数:C++中用于表示类行为的函数C++中可以给成员变量和成员函数定义访问界别 pub
2017-06-09 23:18:44 799
原创 8、不一样的C++系列--面向对象
C++的面向对象面向对象基本概念面向对象的意义在于将日常生活中习惯的思维方式引入程序设计中将需求中的概念直观的映射到解决方案中以模块为中心构建可复用的软件系统提高软件产品的可维护性和可扩展性类和对象是面向对象中的两个基本概念类:指的是一类事物,是一个抽象的概念对象:指的是属于某个类的具体实体类是一种模型,这种模型可以创建出不同的对象实体对象实体是类模型的一个具体实例类和对象的意义类
2017-06-09 23:17:43 840
IOS端K线系列之分时图-呼吸灯的制作(CABasicAnimation) demo源码
2017-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人