C++
Ansel_m
阿里天猫
展开
-
typedef与指针详解
typedef与指针详解关于typedef和define在程序运行中的作用。例:#define a inttypedef int a;define是展开,纯展开。不是调用。如例,int就像一只悬挂在a上面的一块石头,就随时准备着,你说需要的时候,它就“啪”的一声掉下来,把原本定义的名字砸在下面。展现出原本的自己。别的它不管不问了,转载 2013-01-11 18:06:28 · 608 阅读 · 0 评论 -
虚析构函数
虚析构函数(1)虚析构函数即:定义声明析构函数前加virtual 修饰, 如果将基类的析构函数声明为虚析构函数时,由该基类所派生的所有派生类的析构函数也都自动成为虚析构函数。(2)基类指针 pbase 指向用new动态创建的派生类对象child时,用“delete pbase;”删除对象分两种情况第一,如果基类中的析构函数为虚析构函数,则会先删除派生类对象,再删除基类对象第原创 2013-03-14 16:25:09 · 580 阅读 · 0 评论 -
构造函数和析构函数
构造函数是一种特殊的成员函数,与其他成员函数不同:(1)构造函数的名字必须与类名同名(2)它不具有任何类型,不返回任何值。(3)构造函数的功能是由用户定义的,用户根据初始化的要求设计函数体和函数参数。(4)构造函数可以重载(5)构造函数的调用:当通过一个类创建对象时,系统会自动调用类的构造函数。如果类中构造函数重载时,系统根据创建对象时传递的实参来调用类中的其中一个构造函数。(原创 2013-03-14 10:43:06 · 627 阅读 · 0 评论 -
排列与组合的算法
include #include //从n个元素的数组a中,取m个元素的组合 bool zuhe(char a[],int n,int m) {//p[x]=y 取到的第x个元素,是a中的第y个元素 int index,i,*p; p=(int*)malloc(sizeof(int)*m); if转载 2013-03-30 14:15:52 · 567 阅读 · 0 评论 -
c++中new和delete的使用方法
new和delete运算符用于动态分配和撤销内存的运算符new用法: 1. 开辟单变量地址空间 1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a. 2)int *a = new in转载 2013-03-30 12:56:10 · 456 阅读 · 0 评论 -
iphone之sqlite3
首先,添加framework:libsqlite3.0.dylib需要在对应文件的头文件中加入: #import "/usr/include/sqlite3.h"并在Frameworks中加入所需的库,否则会报错: Undefined symbols: "_sqlite3_open", referenced from:转载 2013-04-21 21:17:26 · 618 阅读 · 0 评论 -
static详解
一. 程序的存储。 从历史上讲,C程序一直由下面几部分组成:1. 正文段 CPU执行的机器指令部分。通常,正文段是可共享的,所以即使是经常环境指针环境表环境字符串执行的程序(如文本编辑程序、C编译程序、s h e l l等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外事故而修改其自身的指令。2. 初始化数据段转载 2013-04-18 22:24:08 · 584 阅读 · 0 评论 -
sqlite3详解
最近由于培训,开始接触开源数据库软件SQLITE。这是毕业后第一次使用嵌入式数据库编程(先在学校里都是SQLSERVER)。 SQLITE是一款非常小巧的嵌入式开源数据库软件,目前最新的版本是3.5.0 alpha版(最新版本可以参考www.sqlite.org)。它使用一个文件存储整个数据库,操作十分方便。它的最大优点是使用方便,功能相比于其它大型数据库来说,确实有些差距。但是性能转载 2013-04-21 21:31:04 · 1658 阅读 · 0 评论 -
Locating Memory Issues in Your App
Locating Memory Issues in Your AppManaging the memory that your app uses is one of the most important aspects of creating an app. From the smallest iOS device to the largest OS X computer, memory转载 2014-01-02 20:17:32 · 1250 阅读 · 0 评论 -
Protocol Buffers安装与简单使用
Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。现阶段支持C++、JAVA、Python等三种编程语言。1、什么是Protocol BuffersProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然转载 2014-10-23 14:41:59 · 655 阅读 · 0 评论 -
fmdb -> intForQuery
//開始使用建立的資料庫 //資料庫建在 /tmp 裡,如果沒有 tmp.db,應該會自己建一個 FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; if (![db open]) { //一定要 [db open] 喔!! 不然出的錯不好抓 NSLog(@"Could not转载 2014-11-13 19:59:09 · 1960 阅读 · 0 评论 -
重载、重写与隐藏
成员函数被重载的特征(1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是(1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有virtual 关键字。 “隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如转载 2013-03-14 16:01:01 · 514 阅读 · 0 评论 -
私有成员访问的方法
类中的私有成员可以在以下四个地方被访问(1)当前类中;(2)类的友元函数;(3)类的友元成员函数;(4)类的友元类中所有成员函数;原创 2013-03-14 13:08:31 · 729 阅读 · 0 评论 -
指针和引用的区别
(1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. 由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值. String & rs = string1; 由于没有所谓的 null reference 所以所以在使用前不需要进行测试其是否有值.,而使用指针则需转载 2013-03-14 09:47:34 · 591 阅读 · 0 评论 -
c++ vector容器和 迭代器<iteraor>
源于c++ primer vector容器vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include using std::ve转载 2013-01-11 10:36:59 · 1299 阅读 · 0 评论 -
VS2008 Ap单步调试DLL的方法
VS2008 Ap单步调试DLL的方法1、将Ap和DLL加到一个工程中。(Debug)2、确保Ap工程中的Debug不包含 .3、编译Ap4、编译DLL,会在Ap的Debug中生成 .dll5、按F5。原创 2013-01-22 15:26:24 · 672 阅读 · 0 评论 -
指向成员函数的指针
指向成员函数的指针是C++中比较复杂的语法结构,然而,它却是事件驱动和多线程环境中不可缺少的,特别是当从外部调用成员函数的时候。在多线程里,每一个线程都通过指向成员函数的指针调用这一函数。如果C++没有这些语法特性,那么在很多情况下进行C++程序开发会遇到很多麻烦。 也许你开始会被这一性质的语法吓倒,但当你熟悉之后你就会觉得它相当方便,并且可以通过使用typedef声明来简化转载 2013-03-14 11:24:51 · 679 阅读 · 0 评论 -
c++ this指针
this 指针 成员函数中都包含一个特殊的指针,这个指针的名字是固定的——this。它是当前类对象的指针。(static 修饰的成员函数中没有this,而代替的是"类名::")(函数要在被调用时才能确定其中this的值)。1)对象o.成员函数x(…){…},则函数体中的this表示“&o”;2)对象指针p.成员函数x(…){…},则函数体中的this表示“p”;3原创 2013-03-14 11:26:59 · 572 阅读 · 0 评论 -
初始化表
初始化表应用到的地方:(1).const 修饰的常成员变量 需要初始化列表 (2).派生类的构造函数(3).组合原创 2013-03-14 15:38:20 · 513 阅读 · 0 评论 -
虚函数
虚函数(1)在声明函数时,在最前加上virtual,则该函数就是函虚数,基类的虚函数被派生类继承后仍是虚函数。(2)派生类中可以重写基类的虚函数。(3)用指针访问重写的虚函数时,被访问的虚函数是指针指向的对象所属类的函数。而用指针访问重写的普通函数时,被访问的函数是指针类型所属类的函数(引用和指针相同)(4)虚函数可以实现动态关联例如://Base.hcla原创 2013-03-14 16:21:20 · 648 阅读 · 0 评论 -
常成员变量、常成员函数及常对象
常成员变量是用关键字const来声明成员变量, const位于变量前或类型前都一样。使用特点:(1)常成员变量只能通过构造函数的初始化表对常成员变量进行初始化。(2)常成员变量所在类中所有构造函数都必须通过初始化表对常成员变量进行初始化。(3)常成员变量可以像普的成员变量一样被访问,但是其值不能被修改。常成员函数: 用const来修饰的成员函数 ,const位于函数的括原创 2013-03-14 12:56:38 · 2987 阅读 · 0 评论 -
静态成员变量与静态成员函数
静态成员变量(static)1、 如果想在同类的多个对象之间实现数据共享,可以用静态成员变量,即用static修饰的成员变量,例 static int a;2、 静态成员变量在项目刚运行的时候就分配内存,项目运行结束以后才销毁。3、 静态成员变量被它所属类创建的所有对象共享。4、 静态成员变量必须在类体外初始化。见意放在main函数所在的文件中,格式为:类型 类名∷静态成员变量 =原创 2013-03-14 12:58:44 · 706 阅读 · 0 评论 -
抽象类和纯虚函数
纯虚函数的定义:(1)虚函数被“初始化”为0的函数。声明纯虚函数的一般形式是 virtual 函数类型 函数名 (参数表列) =0;(2)纯虚函数没有函数体;(3)最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”;(4)这是一个声明语句,最后必须加分号。(5)不能在当前类中定义抽象类(1)包含一个或一个以上纯原创 2013-03-14 16:53:07 · 661 阅读 · 0 评论 -
c++字符串解析
字符串变量的使用:1、定义字符串变量要用string类2、使用字符串时,要使include导入头文件,并且要用using namespace std命名空间3、length()函数可以得到字符串的长度字符串变量的运算1、字符串赋值用赋值符号str1 = str2;2、字符串连接用加号3、字符串比较直接用关系运算符(==,>, =,!=),符合条件返回1,不然原创 2013-03-14 10:02:53 · 750 阅读 · 0 评论 -
IOS开发之自定义键盘
实际开发过程中,会有自定义键盘的需求,比如,需要添加一个表情键盘。本文提供一种解决方法,思路就是通过获取系统键盘所在的view,然后自定义一个view覆盖在系统键盘view上,接下来的事情就非常简单了,就是在自定义的view里做任何自己想做的事情。这个方法的关键在于获取系统键盘所在的view。要完成这个,需要监听UIKeyboardDidShowNotification这个系统通知(注意:转载 2014-11-18 09:18:54 · 25469 阅读 · 7 评论