- 博客(23)
- 资源 (6)
- 收藏
- 关注
原创 如何在serviceg中监听各种按键
1. 监听action为Intent.ACTION_CLOSE_SYSTEM_DIALOGS的广播消息2. 接收到消息后取出reason:String reason = intent.getStringExtra("reason");3. 根据reason判断是何种消息 homekey: home按键被短按 call: 有来电 globalactions: p
2015-07-08 20:34:27
1107
翻译 reinterpret_cast例子
#include #include using namespace std;ofstream out("reinterp.out");class X{ enum{sz = 5}; int a[sz];public: X() { memset(a, 0, sizeof(int) * sz); } virtual void f(){} int membsize()
2013-12-10 12:56:45
660
翻译 RTTI
对于存在父子关系的类,当父亲指针指向孩子对象时,有时候需要确定具体指向那个孩子,那么可以用typeid函数确定,但是只能用于存在虚函数的继承层次里,例如:#include #include using namespace std;class one{ class nested{}; nested* n;public: one() { n = new nested();
2013-12-07 19:01:09
474
翻译 出错处理
一. c语言出错处理1. 通过函数返回值获得出错信息、通过标准C语言中的errno()和perror()函数获得错误信息2. 可利用C标准库中的信号处理系统,利用signal()函数(判断事件发生类型)和raise()函数(产生事件),例如:#include #include void catch_function(int);int main(){ if (signal(
2013-12-07 18:29:57
540
翻译 多重继承
一. 子对象重叠问题1. 当继承基类时,在派生类中就得到了基类所有数据成员的副本,该副本称为子对象,如果存在菱形继承,就会出现子对象重叠的情况:2. 向上二义性当new mi,并将其传给base*时,由于没办法搞清楚打算使用d1子对象的base还是d2子对象的base作为结果地址,所以编译器将不会受理,如下:#include #include "Tstash.h"
2013-12-05 13:32:49
493
翻译 控制模板实例化
1. 可以显示的告诉编译器对某种类型进行实例化,比如:#include "sorted.h"#include "integer.h"//Explicit instantiation:template class sorted;int main(){ .... return 1;}2. 加入对于某种类型模板不适用,就需要对这种类型进行模板特例化,从而遇到这种类型时,编译器
2013-12-04 19:30:33
691
翻译 对stackt中的每一个对象调用某个方法,stackt采用模板进行定义
1. stackT.h#ifndef STACKT_H_#define STACKT_H_template class stackIter;templateclass stackt{ enum{ssize = 100}; T stack[ssize]; int top;public: stackt() : top(0) { stack[top] = 0; }
2013-12-04 18:55:00
667
转载 函数实现既能开辟新空间、又能对原来空间大小进行调整、并且能对新增部分设置为0
getmem.h#ifndef GETMEM_H_#define GETMEM_H_#include #include using namespace std;templatevoid getmem(T*& oldmem, int elems){ typedef int cntr; const int csz = sizeof(cntr); const int Tsz
2013-12-04 18:07:45
427
翻译 非内联函数定义模
为了防止在连接时出现多重定义,一般类型的定义不会放在头文件中,但模板的定义很特殊,由template#include #include using namespace std;templateclass array{ enum{size = 100}; T A[size];public: T& operator[](int index);};templateT& a
2013-12-02 16:23:26
604
翻译 对象切片
当多态的处理对象时,传地址与传值有明显不同,如果使用对象而不是地址或引用进行向上映射,对象会被“切片”如程序:#include using namespace std;class base{ int i;public: base(int I = 0) : i(I){} virtual int sum() const {return i;}};class
2013-11-30 13:19:47
458
翻译 纯虚函数也可以有函数体
当: 我们希望基类不能产生对象,然而又希望将一些公用代码放在基类时,可以使用纯虚函数,并未纯虚函数定义函数体#include using namespace std;class base{public: virtual void v() const = 0; virtual void f() const = 0 { cout << "base::f()\n"; }};
2013-11-30 12:57:05
1649
翻译 virtual实现原理
1. 在没有virtual的情况下,以基类指针调用时编译器并不知道比基类更多的东西,通常调用函数的基类版本2. 当用virtual声明函数时,每当创建一个包含虚函数的类或者从包含虚函数的类派生的类时,编译器就创建一个VTABLE3. 如果派生类没有对基类的virtual函数进行重新定义,VTABLE中就填充基类的虚函数的地址4. 编译器会在类中放置一个VPTR,VPTR指向相应的VTA
2013-11-30 11:29:37
713
翻译 私有继承成员公有化
当私有继承时,基类的所有public成员都变成了private。如果希望他们中的任何一个是可视的,只要用派生类的public选项声明他们就可以了,例如:class base1{public: char f() const { return 'a'; } int g() const { return 2; } float h() const { return 3.
2013-11-30 09:22:49
562
翻译 名字隐藏
如果在派生类中定义了和基类同名的方法,那么基类中的方法就会被覆盖,在派生类中变得不可用,例如:#include class homer{public: //int doh(int) const {return 1;}// char doh(char) const {return 'd';} float doh(float) const {return 1.0;}};
2013-11-29 16:00:20
618
翻译 通过运算符重载实现类型转换
一. 除了可以通过构造方法实现自动类型转换,还可以通过运算符重载实现自动类型转换#include class three{ int i;public: three(int I = 0, int = 0) : i(I){}};class four{ int x;public: four(int X) : x(X){} operator three() const {
2013-11-28 09:55:24
607
翻译 重载操作符为成员函数和全局函数对于做操作数的限制
class number{ int i;public: number(int I = 0) { i = I; } const number operator+(const number& n) const { return number(i + n.i); } friend const number operator-(const number&, const numb
2013-11-28 09:24:04
676
翻译 c++返回效率
1. 临时对象 return obj(i); 注释:编译器明白,创建的对象没有其他需求,所以直接把这个对象创建在返回值外面的内存单元,所以仅需调用一次构造函数,并不会调用析构函数,效率比较高2. 创建本地对象,然后返回 obj o(i); return o; 注释:将发生三件事:首先,o被创建,于此同时构造函数被调用。然后,拷贝构造函数把o拷贝到返回值外部存储单元里。最后,当o在作用于结尾时,
2013-11-27 11:22:04
747
翻译 c++ 定义指向类成员的指针
#include struct simple{ int a; int f(float F) { std::cout << F << std::endl; return 1; }};int main(int argc, char* argv[]){ simple so; //指向成员变量的指针 int simple::*pm = &simple::a; so.*
2013-11-26 17:55:00
558
转载 字节对齐
1. 对齐的作用和原因:提高存取效率(注:有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐)2. 如何确定如下结构体的大小struct B{ char b; int a; short c;}; A. 数据类型自身的对齐值: 对于char型数据,其自身对齐值为1,对于short型为2,对于int类型为4单位字节
2013-06-20 19:40:44
396
原创 c++ static
一. 限制全局变量只在本文件中有效1. 在一个源码文件中定义的全局变量,另一个源码文件中可以通过extern关键字声明后,直接使用2. 如果在全局变量前面加上static关键字,那么别的源码文件将无法通过extern声明后使用二. 用于方法内部的变量声明1. 方法内部的局部变量存放在栈中,每次调用方法时会在栈中申请空间,方法执行结束后,会自动回收栈中申请的空间2. 如果用sta
2013-06-19 17:44:16
691
原创 android .9.png保证图片拉伸后内容不变形
当手机的屏幕大小变化时,作为背景的图片会被横向、纵向拉伸,图像可能会因此而变形。针对这种情况,android提供了.9.png图片,它是对.png图片处理后的结果。可以指定图片那一部分不被拉伸,这样就可以保证图片的内容部分不会变形
2012-02-20 16:43:56
2533
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人