
c++
文章平均质量分 72
hawkol
这个作者很懒,什么都没留下…
展开
-
《黑神话·悟空》的编程语言探讨
《黑神话·悟空》的编程语言探讨原创 2024-08-27 21:20:40 · 754 阅读 · 0 评论 -
C++学习笔记 -认识函数模版_hawkol_新浪博客
泛型编程(Generic Programming,简称GP)就是实现一个通用的标准容器库,提高程序的效率和通用性。泛型编程的基础是模版,模版可以分为函数模版和类模版。函数模板实例:#includeusing namespace std;templateT const &max(T const &a,T const & b){return a...原创 2017-01-26 15:19:44 · 138 阅读 · 0 评论 -
C++学习笔记 -类成员指针_hawkol_新浪博客
如果将一个函数指针指向一个类的成员函数,是非法的,即使该函数指针的返回类型以及函数的参数列表都是和成员函数理致的,也是不能实现的。但是可以定义类成员的指针,这种指针可以指向类的数据成员和成员函数。可以使用C++指针直接访问类中的成员。数据成员指针:指针是某个变量的起始地址值,这个变量可以是一般数据类型的变量,也可以是类对象的数据成员。数据成员指针严格意义上说不能算作指针,因为数据成员指针在类中...原创 2017-01-26 09:32:49 · 172 阅读 · 0 评论 -
C++学习笔记 -虚析构函数_hawkol_新浪博客
一个类的构造函数是不能被定义为虚函数的,但析构函数是可以被定义为虚析构函数的,定义为虚析构函数只需要在该类的析构函数上添加virtual关键字。对于一个具有良好编程风格的驾驶员,其往往将基类的析构函数定义为虚函数。这是因为析构函数的作用是释放对象中动态分配的内存空间,达到销毁对象的目的。如果一个基类的析构函数定义为虚函数后,其派生类的析构函数也将自动定义为虚函数。那么,在实际应用的时候,系统将...原创 2016-12-30 14:23:53 · 151 阅读 · 0 评论 -
C++学习笔记 -抽象基类和纯虚函数
为避免实例化无意义的基类,就可以使用抽象类来实现,抽象类一般都是做为基类来使用的,故称为抽象基类,或者也可以将具体功能定义为纯虚函数。纯虚函数是一个特殊的函数,它没有具体的实现(没有函数体的实现)。纯虚函数需要定义在类体内:virtual <类型><函数名>(<参数列表>)=0;使用纯属函数应注意以下几点:1.纯虚函数没有函数体;2.函数...原创 2016-12-29 08:16:07 · 170 阅读 · 0 评论 -
C++学习笔记 -动态绑定_hawkol_新浪博客
静态绑定是根椐编译时声明的变量类型,来决定调用哪个类型的函数;动态绑定是根椐运行时实际赋给变量的值,来决定调用的是基类类或派生类的函数。要实现动态绑定,必须用到虚函数,没有虚函数参与实现的多态性都不是动态绑定。但是虚函数不是实现动态绑定的唯一条件,实现动态绑定还与虚函数的访问方式有关。只有通过对象指针或对象引用 才能调用虚函数实现动态绑定。#includeusing nam...原创 2016-12-26 14:05:15 · 139 阅读 · 0 评论 -
C++学习笔记 -虚函数的默认参数_hawkol_新浪博客
函数有默认值,同样虚函数也有默认值。默认值都是在程序编译期间进行处理的,而静态绑定也是在程序编译时确定函数名和函数体的关系,所以虚函数中使用默认参数会得到意想不到的结果。其规则是如果虚函数中带有默认值,派生类的指针或对象引用调用该函数时,函数参数总是选择基类的函数的参数默认值,该函数的派生类的同名函数的默认值将不会起任何作用。简单地说就是虚函数中含有默认值,派生类的虚函数的参数值是没有任...原创 2016-12-23 17:01:58 · 474 阅读 · 0 评论 -
C++学习笔记 -虚函数和多态性_hawkol_新浪博客
面象对象程序设计的三特性:多态性、封装性、多态性。多态性指的是将同一个命令发给不同的对象而产生不同的行为。对于同一个命令,不同的对象执行不同的操作。“命令”指调用相应函数。“行为”指的是函数的不同实现。利用多态性和虚函数使程序扩展性可以大大加强。C++为实现多态性提供了两种机制:一种是静态绑定(也称早捆绑),另一种就是动态绑定(也称晚捆绑)。绑定指的是对同名函数的选择问题,就是...原创 2016-12-23 09:41:47 · 119 阅读 · 0 评论 -
C++学习笔记 -虚基类_hawkol_新浪博客
在C++中使用虚基类的目的是可以在使用间接共同基类时只保留一份成员。因为一个基类可以在生成一个派生类时作为虚基类,当生成另一个类时可以不作为虚基类,这样就保证了派生类中只保留一份基类的成员。#includeusing namespace std;class animal{public:animal(int ia){a=ia;cout<<"in a...原创 2016-12-22 17:49:00 · 217 阅读 · 0 评论 -
C++学习笔记 -重复继承二义性问题_hawkol_新浪博客
一个类有两个基类,而这两个基类共同继承另一个类,那么这个类可能存在多重继承。比如以下实例:如何避免这种错误?第一种方法:放弃重复继承;第二种方法:通过类名进行限定。main代码修改ff.bird::breath();...原创 2016-12-22 15:34:34 · 187 阅读 · 0 评论 -
C++学习笔记 -多重继承成员的模糊性_hawkol_新浪博客
什么是多重继承的模糊性?指的是在多重继承下,派生类对基类成员访问不唯一,这就导致模糊性问题,编译系统不知道选择哪个基类成员。以上代码在brid和fish两个基类中都有breath()函数,派生类在执行时不知道执行哪个breath()函数,存在二义性。只需更改main()函数如下:void main(){flyfish ff;ff.fly();ff.bird::b...原创 2016-12-21 17:19:57 · 259 阅读 · 0 评论 -
C++学习笔记 -多重继承_hawkol_新浪博客
继承有单重继承和多重继承之分,两者区别在于基类的个数。多重继承的基类有两个或两个以上。多重继承格式:class A:public base1,public base2,public base3{}函数执行和销毁过程:构造函数:base1-->base2-->base3-->A析构函数:A-->base3-->base2-->base...原创 2016-12-19 16:50:15 · 203 阅读 · 0 评论 -
C++学习笔记 -基类和派生类的类型转换_hawkol_新浪博客
派生类可以转换为基类,这种转换是合法的而且也是自动 。但基类转换为派生类则显的毫无意义,而且也是不允许的。总结:1.派生类的对象赋值给基类的对象。如: base b=a。(其中a是base类的派生类对象)2.利用派生类对象初始化基类对象的引用。如:base &b=a。3.如果函数参数是基类对象或基类的引用,实参是派生类对象,那么将发生类型转换。实例:#includ...原创 2016-12-16 17:11:50 · 300 阅读 · 0 评论 -
JAVA游戏开发-超炫酷贪吃蛇游戏源码及教程
一.前言某日,看见隔壁家的小朋友在玩一款网络爆款贪吃蛇游戏,感觉很好玩。自己刚好正在学习JAVA编程,也想实现一个类似功能的游戏Demo练手,在网上查看了不少源码案例,全都是很古老的方块式贪吃蛇游戏案例,没有想要的实现,因此自己动手实现一个JAVA版的贪吃蛇游戏。我在这个Dome完成之后重写了这个游戏的Android版,并重新更名为《蛇王传说》。也欢迎大家下载试玩。游戏下载地址:https...原创 2019-08-29 17:28:49 · 31368 阅读 · 38 评论 -
Android游戏开发:全屏实现 (横屏、沉浸式标题栏和虚拟按键,屏幕常亮)
一、我们在做游戏开发时,经常会使用到全屏(横屏、沉浸式标题栏和虚拟按键,屏幕常亮)等。我把这些功能都集中在BaseActivity做了实现,在某一个Activity中需要使用时,只用继承此其类即可。(此部分代码参考了部分网上的示例)package com.hawkonline.gamedome;import android.app.Activity;import android.con...原创 2019-09-05 17:46:08 · 1902 阅读 · 3 评论 -
C++学习笔记 -函数模版进阶_hawkol_新浪博客
观察以下函数模板实例,虽然解决了不同类型比较的问题,但又产生了新的问题。#includeusing namespace std;templateT1 const &max(T1 const &a,T2 const & b){return a>b?a:b;}void main(){cout<<"max(10,9.4)=...原创 2017-01-26 16:21:23 · 163 阅读 · 0 评论 -
C++学习笔记 -创建类模板实例_hawkol_新浪博客
原创 2017-02-04 15:46:08 · 184 阅读 · 0 评论 -
C++学习笔记 -标准模板库(STL)_hawkol_新浪博客
标准模板库(Standard Template Library )最初是由惠普公司提出来的,经过多年努力,C++标准委员会最终在1994年将STL纳入标准库中。STL是通过C++语言进行实现的,并作为一个泛型化的数据结构和算法库,简化了许多编程任务,而且几乎C++标准库函数都是使用模板实现的。STL分为三类:容器(container):用于容纳其它类型的类对象,STL提供如向量、列表等诸多...原创 2017-02-12 09:16:23 · 128 阅读 · 0 评论 -
C++学习笔记 -派生类的构造函数和析构函数_hawkol_新浪博客
基类中的成员并不是全部都能被派生类所继承,至少基类的构造函数和析构函数是无法继承的,派生类中包含了自身定义的数据成员及从基类中可继承的成员。当初始化派生类的对象时,同时也要初始化基类中的数据成员。对于派生类中的析构函数也是同样的道理,同样承担着释放基类中的数据成员。因此,派生类的构造函数和析构函数应该包含它的基类的构造函数和析构函数。由于析构函数都是没有参数的,那么在派生类的析构函数中隐...原创 2016-12-16 16:25:01 · 156 阅读 · 0 评论 -
C++进阶 -一张图了解类知识_hawkol_新浪博客
原创 2017-06-14 11:32:30 · 153 阅读 · 0 评论 -
C++进阶 -类中成员和成员函数的动态调用
#include <iostream>using namespace std;class Transport{public:Transport(double s,double w){Speed=s;Weight=w;}virtual ~Transport(){cout<<"in ~Transport!"<<endl;}void Mov...原创 2017-08-07 10:34:07 · 2816 阅读 · 0 评论 -
C++进阶 -指针与数组_hawkol_新浪博客
#includeusing namespace std;void main(){int c;cin>>c;int *pc=new int[c];int i;for(i=0;i*(pc+i)=i*2+1;cout<<"&pc="<<&pc<<endl;//数组指针地址cout...原创 2017-07-04 10:21:36 · 141 阅读 · 0 评论 -
C++进阶 -友元函数实现重载_hawkol_新浪博客
#include#includeusing namespace std;class student{public:student(){};student(string n,int g,int a,char s){name=n;grade=g;age=a;sex=s;}friend ostream& operator<<(o...原创 2017-06-25 15:42:06 · 194 阅读 · 0 评论 -
C++进阶 -结构体作为函数参数返回_hawkol_新浪博客
#includeusing namespace std;struct course{double math;double computer;double english;double physics;};struct student{char name[20];course cos;};void display(student &stu);/...原创 2017-06-08 16:37:45 · 451 阅读 · 0 评论 -
C++进阶 -函数参数传递_hawkol_新浪博客
C++一般有两种传递方式:一种是按值传递,另一种是按引用传递。结构体和共用体是按值传递。每个元素都会生成相应副本,再将副本传递给形参。对于这一点结构体和数组不一样,虽然数组本质上也是按值传递,但是数组传递的是一个元素的首地址,其它元素并没有传递到函数里。#includeusing namespace std;struct student{char name[20];i...原创 2017-06-08 15:22:21 · 152 阅读 · 0 评论 -
C++进阶 -数组的多种方式操作_hawkol_新浪博客
原创 2017-06-07 17:41:48 · 160 阅读 · 0 评论 -
C++学习笔记 -猜数字游戏_hawkol_新浪博客
你猜我猜不猜?你猜?//code#include#includeusing namespace std;void main(void){system("cls");srand((unsigned)time(NULL));int m=0 + rand() % 100;int input;int max=0;cout<<"*********...原创 2017-05-17 11:11:10 · 856 阅读 · 0 评论 -
C++学习笔记 -归并排序算法_hawkol_新浪博客
#includeusing namespace std;void MergeSort(int arr[], const int len);//归并排序void printfarr(int arr[],int len);//打印void Merge(int arr[], int reg[], int start, int end);void main(){ i...原创 2017-05-09 17:55:36 · 140 阅读 · 0 评论 -
C++学习笔记 -冒泡排序排序算法_hawkol_新浪博客
#includeusing namespace std;void InsertSort(int arr[], int len);//冒泡排序void printfarr(int arr[],int len);//打印void main(){int arr[10]={6,7,5,4,3,2,1,9,0,8};printfarr(arr,10);InsertSor...原创 2017-05-09 17:53:08 · 143 阅读 · 0 评论 -
C++学习笔记 -真接插入排序算法_hawkol_新浪博客
#includeusing namespace std;void InsertSort(int arr[], int len);//直接插入排序void printfarr(int arr[],int len);//打印void main(){int arr[10]={6,7,5,4,3,2,1,9,0,8};printfarr(arr,10);InsertS...原创 2017-05-09 17:51:26 · 178 阅读 · 0 评论 -
C++学习笔记 -put()和write()的区别_hawkol_新浪博客
ostream中put()用于显示字条,write()用于显示字符串,它有两个参数,第一个参数为字符中的地址,第二个参数指出要显示多少个字符。#includeusing namespace std;void main(){char *pstr="Hello word";cout.put('A').put('m').put(70);cout.put('\n');cou...原创 2017-02-25 16:34:10 · 1457 阅读 · 0 评论 -
C++学习笔记 -输入/输出流和文件流_hawkol_新浪博客
流是程序中输入或输出设备的抽象表示,流可以看成是计算机外部设备和内存之间流动的一系列字节。输入时,程序从输入流中读取字节,输出时,程序从输出流中写入字节。cin->wcin:输入cout->wcout:输出cerr->wcerr:错误流,用于显示错误信息clog->wclog:错误流,和输出设备关联在C++中,3种流象可以处理文件:ifstream,...原创 2017-02-25 16:04:51 · 130 阅读 · 0 评论 -
C++学习笔记 - main()函数及其参数
main()函数及其参数:int main(int argc, char *argv[]C++标准允许主函数main()有或没有参数列表。您能在主函数main()中使用一个或更多的参数。如下是一些惯例:int main(int argc, char *argv[])第一个参数argc,指明有多少个参数将被传递给主函数main(),真正的参数以字符串数组(即第2个参数argv[])的形式原创 2016-10-18 17:59:24 · 1552 阅读 · 0 评论