手机随时阅读
新人专享大礼包¥24
51CTO博客开发
在Windows上开发OpenGL, 一般都会选择Visual Studio作为开发工具,不过我更喜欢Eclipse。 在Windows上开发OpenGL所需的库一般会带有32这个后缀, 跟Linux上的还不太一样。 现在开始搭建环境: 1.首先下载Eclipse, 开发C/C++应用程序的话选择”Eclipse IDE for C/C++ Develo
要想自学游戏开发,在国内门槛还是挺高的, 学校没有游戏开发课程, 市面上也没有正规的游戏开发培训机构, 不过还好,有开源软件,也有开源游戏,像大名鼎鼎的Nexuiz,cube还有 Hero of Allacrost 等等,都是非常棒的开源游戏项目,感兴趣的都可以尝试着参与共同开发。 跨平台的游戏, 图像渲染毫无疑问用的是OpenGL,对与2D部分,或者GUI
最近一直在用Ubuntu做一些东西, Linux天生适合开发, 所以一些开发工具当然不能不装。 Ubuntu安装GCC,G++, Make等, sudo apt-get install build-essential 安装java6 sudo add-apt-repository ppa:sun-java-community-team/sun-java6 sudo
常量必须在构造函数的初始化列表里面初始化或者将其设置成static.
1. RPM Package. Basically you can double click to install like EXE in window. 1) open a shell window, type rpm -qa XXX* to search software you installed, like rpm -pa realplay* to search
while(*s++); 跳出循环时,s指向'\0'后面的地址 while(*s) s++; 跳出循环时,s指向'\0'处
template<class A_Type> class Calc { public: A_Type add(A_Type a, A_Type b) { return a+b; } A_Type multiply(A_Type a, A_Type b); }; templat
很简单的一种方法就是,设置两个指针,一个每次递增一步,一个每次递增两步,如果有环两者必然重合。 struct node { char val; node *next; }; bool check_circle(const node *head) //有环return tr
void fun(int a) { printf("%d", a%10); a /= 10; if(a<=0) return; f
求一个数组中的最大元素是比较简单的. int get_max_number(int *data, size_t size) { int max = data[0]; for(size_t i=1; i!=size; i++) { if(data[i]>max) { max = data[i]; } } return max;
派生类指定多个基类,这样的继承结构被称做多重继承。 举个例子,交通工具类可以派生出汽车和船连个子类,但拥有汽车和船共同特性水陆两用汽车就必须继承来自汽车类与船类的共同属性。 由此我们不难想出如下的图例与代码: 当一个派生类要使用多重继承的时候,必须在派生类名和冒号之后列出所有基类的类名,并用逗号分隔。 //程序作者:管宁 &nbs
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] &n
若在逻辑上A是B的“一部分”,则不允许B从A派生,而是要用A和其他东西组合出B。 例如眼(Eye)鼻(Nose)口(Mouth)耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,而不是派生而成。 class Eye { public: void look(vo
class A { char k[3]; public: virtual void aa() {} }; class B : public virtual A { char j[3]; public: virtual void bb() {} }; class C : public virtual B { char i[3]; p
class A { public: virtual void f() { cout << "A" << endl; } }; class B:public A { public: virtual void f() { cout << "B" <
bool IsBig_Endian() //如果字节序为big-endian,返回true; //反之为 little-endian,返回false { unsigned short test = 0x1122; if(*( (unsigned char*) &test ) == 0x1
用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof() 一、 16位的系统下: int i = 65536; cout << i; //输出0 int i = 65535; cout << i; //输出-1 32位的系统下: int i = 65536; cout
#include <vector> using namespace std; class CDemo{ public: CDemo():str(NULL){} ~CDemo(){if(str) delete [] str;} char *str; }; int
在基类用virtual声明成员函数为虚函数,在派生类中重新定义该虚函数,要求函数名、函数返回类型、函数参数个数和类型与基类的虚函数相同。如果在派生类中没有对基类的虚函数重新定义,则派生类直接简单的继承该虚函数。 有一种情况例外,在这种情况下派生类与基类的成员函数返回类型不同,但仍起虚函数的作用。即基类虚函数返回一个基类指针或基类引用,而子类的虚函数返回一个子类的指针或子类的引用。
#include <stdio.h> #include <stdlib.h> #include <assert.h> void get_memory(char *p) { p = (char *)malloc(1024); } int main(int argc, char *argv[]) {
从书上看到这么一道题,觉得不错,现摘抄过来 下面的数据声明都代表什么? 1. float (**def)[10] 2. double *(*gh)[10] 3. double (*f[10])() 4. int *((*b)[10]) 5. long (*fun)(int) 6. int (*(*F)(int, int))(
1. 定义函数模板 template <typename T> int compare(const T &v1, const T &v2)  
string input; map<string, int> word_count; while(cin >> input) { ++word_count[input]; } for(map<string, int>::iterator i=word_count.begin(); i!=word_count.end();
一下这段代码可以很清晰的表述出这四个函数的区别 ilist是一个list<int>类型 if (!ilist.empty()) { // val 和val2 指向相同的元素 list<int>::reference val = *ilist.begin(); list<int>::reference v
//Cat.h class Cat { public: Cat(int age):its_age(age) { HowManyCats++; } virtual ~Cat() { HowManyCats--; } virtual int get_age(); virtual void set_age(int); static int get_how_many() {re
int fn(int i) { if(1==i) { return 1; } else { &n
要使C++程序在main函数退出后继续执行代码,可以使用atexit()函数注册一个函数。 一般在SDL等图形库程序中,在main函数退出时要继续执行一些代码来关闭图形库的使用,释放图像等占用的内存资源,进行一些收尾工作。 这里要求该函数无返回值同时无参数。 同时按照注册函数时相反的方向执行。
Copyright © 2005-2022 51CTO.COM 版权所有 京ICP证060544号