- 博客(168)
- 资源 (37)
- 收藏
- 关注
原创 C++中的虚继承
多继承中被当做基类来虚继承的类是虚基类。虚基类:使用关键字virtual继承的基类。即使同一类在层次中作为虚基类出现多次,派生类对象中虚基类部分也只出现一次。在非虚基类中,构造函数只能初始化自己的直接基类,当对一个类进行虚继承的时候,由最底层的派生类初始化那个类,因此最底层的派生类应包含用于其他所有虚父类的初始化式。在这里有四个类:Point ,PointA,PointB,DerivedP
2012-11-25 22:42:27 3200
原创 C++中的多继承
多重继承:类有多个直接基类的继承。派生类继承所有基类的成员,通过在派生列表中指定多个基类而定义多个基类,每个基类需要一个单独的访问标号。若不定义访问标号,默认为private。class DerivedPoint :public PointA,public PointB {};派生类构造函数初始化所有基类构造函数初始化式只能控制用于初始化基类的值,不能控制基类的构造
2012-11-25 21:40:49 6731 1
原创 C++中的异常处理(三)
查看普通函数的声明的时候,不可能知道该函数会抛出什么异常,但是在捕获异常的时候要知道一个函数会抛出什么样的异常,以便捕获异常。异常说明:指定,如果函数抛出异常,抛出的异常将是包含在该说明中的一种,或者是从列出的异常中派生的类型。1.定义异常说明异常说明跟在形参表后。一个异常说明在关键字throw之后跟着一个由圆括号括住的形参列表,该列表可能为空或者多个,若为多个,则用逗号分开。例如:
2012-11-24 23:00:36 2636 1
原创 C++中的异常处理(二)
先看下面的代码:int main(){ int *i=new int(10); /* 这中间的代码出现异常 */ delete i; return 0;} 如果出现了这样的情况,动态分配的内存就不会被释放。为了处理这样的问题,可以使用C++标准库auto_ptr类。如果使用下面的代码,内存就一定会被释放#includeint ma
2012-11-24 20:56:54 2999 4
原创 C++中的异常处理(一)
异常就是运行时出现的不正常,例如运行时耗尽了内存或遇到意外的非法输入。异常存在于程序的正常功能之外,并要求程序立即处理。不能不处理异常,异常是足够重要的,使程序不能继续正常执行的事件。如果找不到匹配的catch,程序就调用库函数terminate。 如果不处理异常将会出现上图的效果。下面是处理异常的代码:#includeusing namespace std;int mai
2012-11-23 21:21:37 19471 2
原创 高仿微信气泡聊天
下面想看看效果图第一张效果图是打开就出现的效果,第二张效果图是发送之后的效果图。源代码下载:点击下载下面对实现细节说明一下,附带代码在Activity的布局文件中,包括3个部分,标题的布局,中间的ListView,下面的发送部分。下面是布局文件main.xml的代码:<LinearLayout xmlns:android="http://schemas.android.
2012-11-22 21:06:54 14375 2
原创 C++中的多态
C++中的多态分为四种1.参数多态这种多态包括函数模板和类模板2.包含多态这种多态就是C++面向对象编程的灵魂3.重载多态重载多态是指函数名相同,但函数的参数个数或者类型不同的函数构成多态4.强制多态这种多态是强制类型转换,司空见惯啊。 这里主要说的是C++面向对象编程的灵魂------包含多态。C++中面向对象编程的一个颇具讽刺的地方是,不能使用对象支
2012-11-21 13:56:13 4065 1
原创 C++派生类与基类的转换
每一个派生类对象包含一个基类部分,这就意味着可以像使用基类对象一样在派生类对象上执行操作。因为派生类对象也是基类对象,所以存在从派生类类型的引用到基类类型的自动转换,即,可以将派生类对象的引用转换为基类对象的引用,对指针也类似。基类对象既可以作为独立对象存在,也可以作为派生类对象的一部分而存在,因此,一个基类对象可能是也可能不是一个派生类对象的一部分,结果没有从基类引用到派生类引用的自
2012-11-20 21:26:10 3791
原创 C++派生类的构造函数和复制控制
派生类的构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员,像任何类一样,如果类没有定义自己的构造函数和复制控制成员,编译器自动合成。1.构造函数派生类的构造函数先要初始化基类的成员,然后初始化本类的成员下面定义一个Father类,头文件如下:#if !defined(AFX_FATHER_H__C5B84CD6_0B79_4806_BEDA_035EB4183
2012-11-19 21:11:54 6127
原创 C++继承方式与成员访问规则
既然派生类中包含基类成员和自己增加的成员,就产生了这两部分成员的关系和访问属性的问题,派生类对基类的成员访问方式有以下两种:内部访问:在派生类中访问基类的成员对象访问:派生类对象在类外部访问通过下面一张图片,简单明了的表示派生类对基类的访问规则 只有在基类中访问权限为public且继承方式为public的成员,派生类对象才能在外部访问基类的成员。
2012-11-19 20:07:54 2230
原创 C++操作符重载
重载操作符是具有特殊名称的函数:保留字operator后接需定义的操作符符号。除了函数调用操作符之外,重载操作符的形参数目(包括成员函数的隐式this指针)与操作符的操作数数目相同。函数调用操作符可以接受任意数目的操作数。 大多数操作符都可以重载,所以我列出不能重载的操作符,一共有四种::: .*
2012-11-18 21:04:41 2563
原创 C++复制控制之赋值操作符(二)
与类要控制初始化对象的方式一样,类也定义了该类型对象赋值时会发生什么,与复制构造函数一样,如果类没有定义自己的赋值操作符,则编译器会合成一个。重载操作符是是一些函数,其名字为operator后跟着所定义的操作符的符号。因此,通过定义名为operator=的函数,我们就可以对赋值进行定义赋值是二元运算,所以该操作符函数有两个形参:第一个形参对应左操作数,第二个形参对应右操作数。因为赋值操作是类的
2012-11-11 21:21:00 2744 1
原创 C++复制控制之复制构造函数(一)
只有单个形参,而且该形参是本类类型对象的引用(常用const修饰),这样的构造函数称为复制构造函数。与默认的构造函数一样,复制构造函数由编译器隐式调用。如果我们没有定义复制构造函数,编译器就会为我们合成一个。与合成的默认构造函数不同,即使我们定义了其他构造函数,也会合成复制构造函数,合成复制构造函数将逐个成员初始化。下面是代码:Student.h头文件#if !defined(AFX_
2012-11-10 23:34:27 1779
原创 C++文件操作
C语言上是C++的子集,所以C++操作文件可以使用C语言的函数。C++的fstream类提供了对文件的操作,但是不常用,C++操作文件的时候用C语言的函数还是方便一些。C语言使用FILE结构体操作文件,使用FILE结构体时,需要包含头文件#include下面的代码是一个示例#include#include#includeusing namespace std;int
2012-11-07 22:47:08 1991 1
原创 C++中的友元
友元机制允许一个类将其非公有的成员的访问权授予指定的函数或者类。友元的声明以关键字friend开始。它只能出现在类定义的内部。友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所以他们不受其声明出现部分访问控制的影响。如果在class Student{private:int age;string name;friend class Teacher;
2012-11-06 21:14:27 1914
原创 C++标准库set类型
set容器只是单纯的键的集合,键必须为一。set容器不支持下标操作,而且没有定义maped_type类型。在set容器中,value_type不是pair类型,而是与key_type类型相同的类型。1.在set中添加元素set set1;set1.insert("the");set1.insert("end"); 也可以添加一对迭代器,如下:set1.insert(se
2012-11-06 10:53:20 5839
原创 C++标准库map类型
map是键-值对的集合。map类型通常可以理解为关联数组:可以使用键作为下标获取一个值,正如内置数组一样。而关联的本质在于元素的值于某个特定的键相关联,而并非通过元素在数组中的位置获取。1.map对象的定义要使用map对象,则必须包含map头文件。在定义map对象时,必须分别指明键和值得类型map word_count; string为键,int为值map的构
2012-11-05 10:50:47 6741
原创 C++标准库pair
与关联容器相关的模板类型,包含两个数据成员,在utility头文件中定义.pair类型提供的操作:pair p1;pair p1(v1,v2);make_pair(v1,v2);p1 p1 == p2;p.first;p.second; 1.创建和初始化: pair name; pair> data;以上全部调用pair类型的默认构造函对
2012-11-05 09:21:14 8554
原创 Android仿QQ主界面
Android版的QQ使用的是ViewPager实现的,主要是可以实现TabHost的界面,但功能比Tabhost更好,因为可以实现用手滑动实现界面的切换。QQ的截图如下: 下面我来实现这个效果工程下载:点击下载1.首先使用Google的附加库android-support-v4.jar,这个库,点击下载。2.XML布局文件
2012-10-28 00:14:38 13449 4
原创 Android用户定位(二)
1.获取设备支持哪些定位功能获得LocationManager之后,通过List list=lm.getAllProviders();for(String p:list){ System.out.println(p);}获得设备支持的定位功能2.选择你所需要的定位方式通过Criteria来筛选定位功能Criteria c=new Criteria();
2012-10-19 19:42:16 2006
原创 Androd用户定位(一)
使用GPS定位的话,需要如下权限:如果使用WIFI接入点定位的话,需要如下权限:或者首先使用LocationManager lm=(LocationManager) this.getSystemService(Context.LOCATION_SERVICE);lm.requestLocationUpdates(LocationManager.GPS_PROVIDE
2012-10-19 19:18:37 7588
原创 C++栈和队列
使用标准库的栈和队列时,先包含相关的头文件#include#include定义栈如下:stack stk;定义队列如下:queue q;栈提供了如下的操作s.empty() 如果栈为空返回true,否则返回falses.size() 返回栈中元素的个数s.pop() 删
2012-10-19 16:19:26 76028 14
原创 C++指向函数的指针
函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关。int (*pi)(const string &,const string &);这个语句将pi申明为指向函数的指针,它所指向的函数带有两个const string& 类型的形参和int类型的返回值。*pi两侧的园括号是必须的:int *pi(c
2012-10-18 19:35:16 6750
原创 JSP返回的关键代码
String xmlStr = sb.toString(); if (xmlStr != null && !"".equals(xmlStr)) { response.setContentType("text/xml;charset=UTF-8"); response.getWriter().write(xmlStr); response.flushBuffer(
2012-10-12 19:58:13 1395
原创 C style字符串
C style string(C风格字符串)的定义如下:C程序把指向以空字符结束的字符数组的指针视为字符串。在C++中,字符串字面值就是C风格字符串。C标准库定义一系列处理这种字符串的库函数,C++中将这些标准库函数放在cstring头文件中。由于C风格字符串本质上容易出错,C++程序应该优先使用C++标准库类string而少使用C风格字符串。C++标准库类string比C风格字符串更安全,效
2012-10-08 18:13:40 3895
原创 C++指向const对象的指针和const指针
1.指向const对象的指针我们可以通过指针来修改其所指对象的值,但如果指针指向的是const对象,则不允许使用指针来改变其所指的const值。C++要求指向const对象的指针也是const类型。const double *pd; //可以指向一个const double类型。 这里的const限定的是pd所指的对象,而不是pd。这里的pd是可以重
2012-10-08 13:30:44 7051
原创 Android操作蓝牙
1检测一个设备是否有蓝牙设备,开启蓝牙设备,获取配对的设备这些操作需要权限下面是判断是否有蓝牙设备,是否开启蓝牙,若没有开启则请求开启蓝牙BluetoothAdapter ba=BluetoothAdapter.getDefaultAdapter(); if(null!=ba) { System.out.println("本机有蓝牙设备"); i
2012-10-07 20:24:15 4474
原创 Android管理WIFI
首先,需要权限 WIF的状态在WifiManager中定义了常量,都是public static final int类型的,如下public static final int WIFI_STATE_DISABLEDWi-Fi is disabled.Constant Value: 1 (0x00000001)public static f
2012-10-07 12:29:53 5859
原创 Android使用ViewPager实现左右滑动效果
使用ViewPager用使用android的兼容包,android-support-v4.jar。工程源代码下载:点击下载在res/layout下建立三个文件first.xml,second.xml,third.xml,随便加入一些控件main.xml文件的布局如下:<FrameLayout xmlns:android="http://schemas.android.com
2012-10-06 11:13:06 16599
原创 C++标准库vector及迭代器
vector是同一种对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储元素相关的类存。引入头文件#include1.vector对象的定义和初始化vector v1 vector保存类型为T的对象。默认构造函数,v1为空vector v2(v1) v2是v1的一个副本vector v3(n,i)
2012-10-05 22:45:29 43317 1
转载 Android APK反编译详解
原文地址:http://blog.92coding.com/index.php/archives/106.html在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。一、反编译Apk得到Java源代码首先要下载两个工具:dex2jar和JD-GUI前者是将apk中的classes.dex转化成Jar文件,而JD-G
2012-10-05 09:41:47 1485
原创 C++标准库string类型
string类型支持长度可变的字符串,C++标准库将负责管理与存储与字符串相关的类容,以及提供各种有用的操作。标准库string类型的目的就是满足对字符串的一般应用。包含头文件#include1.string对象的定义与初始化string s1; 默认构造函数string s2(s1); 将s2初始化为s1的一个副本str
2012-10-04 22:26:22 7128
原创 Android自定义按钮样式
使得按钮在不同的状态有不同的背景图片是本篇的主要类容在res/drawable下新建一个buttonstyle.xml文件,这个文件用于描述按钮的样式 还有很多的样式如下图在布局文件中添加一个Button,使用buttonstyle.xml<LinearLayout xmlns:android="http://schemas.andro
2012-09-27 22:19:22 9076
原创 Android 时间和日期对话框
package com.zhycheng;import android.app.Activity;import android.app.DatePickerDialog;import android.app.Dialog;import android.app.TimePickerDialog;import android.os.Bundle;import android
2012-09-26 15:25:44 4750
原创 Android ContentProvider
ContentProvider提供了不同应用程序之间数据传递的接口,实现了不同应用程序之间的数据传递。我常见的ContentProvider比如通讯录,多媒体文件等等。这些是系统提供的ContentProvider。其实我们一般都是使用系统提供的ContenProvider,很少自己实现ContentProvider,不过自己实现ContenProvider会对系统提供的ContentProvid
2012-09-26 09:37:15 1427
原创 Android Service
Service与Activity的级别差不多,运行在后台,不与用户交互。Service是在主线程中,要在Service中运行好事的代码的话,为了不阻塞UI线程应该新创建一个线程。创建一个Service需要继承自Service:package com.zhychengsssd;import android.app.Service;import android.content.Inte
2012-09-23 01:18:15 1137
转载 android操作sdcard中的多媒体文件
原文地址:http://bbs.hiapk.com/forum.php?mod=viewthread&tid=1263558 当android的系统启动的时候,系统会自动扫描sdcard内的多媒体文件,并把获得的信息保存在一个系统数据库中,以后在其他程序中如果想要访问多媒体文件的信息,其实就是在这个数据库中进行的,而不是直接去sdcard中取,理解了这一点以后,问题也随着而来:如果我在开机
2012-09-22 11:32:28 1364
原创 Android SQLite
Android操作系统使用SQLite数据库,使用有两种方法获得数据库对象:1.获取已经存在的数据库SQLiteDatabase dbbrndi=SQLiteDatabase.openDatabase("/sdcard/zhycheng.db3", null,SQLiteDatabase.OPEN_READONLY);第一个String参数是数据库在文件系统中的位置,第二个参数一般
2012-09-22 09:28:19 4947
原创 Android的各种Toast
Toast仅仅是向用户做出一个提示,提示有各种各样的方式。下面将一一道来。1.最简单的ToastToast.makeText(this, "默认", Toast.LENGTH_SHORT).show();2.自定义显示位置的ToastToast t;t=Toast.makeText(this, "自定义显示位置", Toast.LENGTH_SHORT);
2012-09-21 22:17:48 2190
原创 Andriod 对话框
在Activity中可以调用showDialog()来显示一个对话框,覆盖Activity的onCreateDialog方法,在这个方法中创建对话框,返回一个Dialog对象。1.最简单的对话框AlertDialog.Builder b=new AlertDialog.Builder(this);b.setTitle("简单的"); b.setMessage("this is
2012-09-21 13:28:04 1762
超级俄罗斯方块
2012-04-27
贪吃蛇游戏
2012-03-11
LittleBee(小蜜蜂)
2012-03-11
Java版俄罗斯方块
2012-03-06
【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(二)
2012-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人