- 博客(112)
- 资源 (6)
- 收藏
- 关注
转载 为什么C++中千万不要返回局部对象或变量的引用和指针
大家都知道一个常识:“C++中千万不要返回局部对象或变量的引用和指针”。既然所有C++权威的书上都要求“一定不要返回局部对象或变量的引用和指针”,那为什么C++编译器不从语法上直接禁掉这种用法。如果只是建议的话,那么“返回局部对象或变量的引用和指针”是否有用武之地呢?(从理论上来讲,我认为这种做法似乎总是错误的,原因大家都知道。)例1:class CComplex{publ
2012-03-04 11:30:56
2836
转载 wxWidgets菜单上显示图标
<br /> <br />wxMenu* file_menu =newwxMenu();<br />wxMenuItem* pMenuItem =new wxMenuItem(file_menu, wxID_EXIT, wxT("退出(&X)/tCtrl-x"), wxT("退出本系统"));<br /> <br />wxBitmap bitmap; <br />bitmap.LoadFile(wxT("123.png"), wxBITMAP_TYPE_PNG);<br /> <br />pMenuItem
2011-03-27 09:38:00
1599
原创 windows内存管理
<br />(1)有三种方法:虚拟内存,内存映射文件,内存堆栈。 <br /> 虚拟内存是将页文件加载到内存,适用于比较大的对象或结构;<br /> 内存映射文件是将磁盘上文件加载到内存,适用于大文件和单机的进程间内存共享;<br /> 堆栈就是动态的分配内存,适用于小对象的创建。 <br /> 这些在windows核心编程中都描述得很详细的。 <br /> (2) 当进程要读自己的虚拟地址空间中的数据时 <br /> if(数据在物理内存中) <br /> { <br />
2010-10-18 15:28:00
642
转载 尽量使用初始化而不要在构造函数里赋值
尽量使用初始化而不要在构造函数里赋值<br /> <br />看这样一个模板,它生成的类使得一个名字和一个t类型的对象的指针关联起来。<br />template<class t><br />class namedptr {<br />public:<br /> namedptr(const string& initname, t *initptr);<br /> ...<br />private:<br /> string name;<br /> t *ptr;<br />};<br />(因为有
2010-10-18 10:11:00
900
转载 把类的析构函数写成虚函数的用意
Cpp代码 #include class Base { public: Base() { mPtr = new int; } ~Base() { delete mPtr; coutclass Base { public: Base() { mPtr = new int; } ~Base() { delete mPtr; cout
2010-10-14 09:28:00
590
转载 常对象和常函数的关系 const
(1) 常对象用const修饰的对象叫对象常量,其格式如下:〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。 例:分析下列错误的地方,说明理由;#includeclass Point{ int x, y;public:Point(int a, int b) { x=a; y=b;}Void MovePoint( int a, int b){ x+=a; y+=b;}Void print(){ cout};void main(
2010-10-12 19:11:00
605
原创 sprintf、strcpy 及 memcpy 函数
<br />这些函数的区别在于 实现功能 以及 操作对象 不同。<br />strcpy 函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。<br />sprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现 (字符串或基本数据类型)向 字符串 的转换 功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。<br />memcpy 函数顾名思义就是 内存拷贝,实现 将一个 内存
2010-09-28 14:23:00
874
转载 #pragma once与 #ifndef的区别
<br />为了避免同一个文件被include多次<br /><br />1 #ifndef方式<br />2 #pragma once方式<br /><br />在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。<br /> 方式一:<br /> #ifndef __SOMEFILE_H__<br /> #define __SOMEFILE_H__<br /> ... ... // 一些声明语句<br /> #endif<br /
2010-09-08 17:04:00
469
转载 深入C++的new
<br />“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。<br />new的过程<br />当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:<br />class A<br />{<br /> int i;<br />public:<br />
2010-06-28 16:47:00
490
转载 程序在内存中运行的奥秘
<br />内存管理是操作系统的核心功能,无论对于开发者还是系统管理员内存管理的重要性都是不言而喻的。我会在接下来的几篇文章通过计算机的实际运行过程谈谈内存管理,当然在必要的时候我也会从底层原理去阐释这个问题。我们提到的概念是不局限于平台特性的通用概念,不过为了阐述这些概念我们选取的实例大多来源于Linux和基于x86架构的32位Windows操作系统。这篇文章,我们首先来看看程序是如何使用内存的。<br /> <br /> 多任务操作系统中,每一个进程都有它自己的内存“沙盒”。所谓“沙盒”,是指虚拟地址
2010-06-25 16:12:00
840
转载 Boost线程简介(转自Boost中文站)
Boost线程简介(转自Boost中文站)<br />C++ Boost Thread 编程指南0 前言1 创建线程2 互斥体3 条件变量 4 线程局部存储5 仅运行一次的例程6 Boost线程库的未来 7 参考资料:0 前言标准C++线程即将到来。CUJ预言它将衍生自Boost线程库,现在就由Bill带领我们探索一下Boost线程库。<br />就在几年前,用多线程执行程序还是一件非比寻常的事。然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率;为了达到最大的吞吐量,事务 服务器在单独
2010-06-25 15:56:00
828
转载 vector类中的构造函数
<br />向量容器使用动态数组存储、管理对象。因为数组是一个随机访问数据结构,所以可以随机访问向量中的元素。在数组中间或是开始处插入一个元素是费时的,特别是在数组非常大的时候更是如此。然而在数组末端插入元素却很快。<br />实现向量容器的类名是vector(容器是类模板)。包含vector类的头文件名是vector。所以,如果要在程序里使用向量容器,就要在程序中包含下面语句:<br />#include <vector><br />此外,在定义向量类型对象时,必须指定该对象的类型,因为vector类是一
2010-06-23 10:10:00
10241
转载 cin
<br />很多初学者都认为cin函数是一个很简单的函数,其实不然!cin函数有很多需要了解的知识(比如:cin的返回值是什么,cin提供了哪些成员函数且分别是什么作用,如cin.clear(), cin.ignore(), cin.fail(), cin.good()等等),如果没有很好的掌握,在使用的时候很可能会出问题却不知其原因!而且很多人也确确实实遇到过不少问题,以下是几个简单的例子:<br />程序1:<br />#include <iostream><br />using namespace s
2010-06-11 17:19:00
1692
1
转载 cout格式输出的使用
<br />控制符是在头文件iomanip.h中定义的对象。 使用前必须把iomanip.h包含进来<br /> 1. I/O的书写格式<br /> I/0流是输入或输出的一系列字节,当程序需要在屏幕上显示输出时,可以使用插入操 作符“<<”向cout输出流中插入字符。例如:<br /> cout<<”This is a program./n";<br /> 当程序需要执行键盘输入时,可以使用抽取操作符“>>”从cin输人流中抽取字符。例如:<br /> int myAge;<br /> c
2010-06-11 15:16:00
1583
原创 在C++中explicit关键字
<br />在C++中explicit作用:<br />explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。<br />explicit使用注意事项:<br />*explicit 关键字只能用于类内部的构造函数声明上。<br />*explicit 关键字作用于单个参数的构造函数。<br />* 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换<br /> <br />如下面所示
2010-06-08 16:35:00
404
转载 sizeof(struct)的内存分配
<br />请看下面的结构:<br /> struct MyStruct { double dda1; char dda; int type; };<br />对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?<br />也许你会这样求:sizeof(MyStruct)=sizeof(double)+sizeof(char)+sizeof(int)=13<br />但是当在VC中测试上面结构的大小时,你会发现sizeof(M
2010-06-03 15:41:00
517
转载 strlen和sizeof
<br />1.sizeof返回值类型为size_t,在<stddef.h>中有定义:typedef unsigned int size_t。该类型保证能容纳实现所建立的最大对象的字节大小。 <br />2.sizeof是算符,strlen是函数。 <br />3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''/0''结尾的。 <br />sizeof还可以用函数做参数,比如: <br />short f(); <br />printf("%d/n", sizeof(f()
2010-06-03 14:23:00
616
原创 wxWidgets 在windows下加载图标资源
将XX.ico拷贝到项目根目录,新建resource.rc文件,文件手动输入下列内容:myicon ICON "XX.ico"#include 在程序顶层Frame中写出如下代码:SetIcon(wxIcon(wxT("myicon"))); 如果出现错误:CVTRES : fatal error CVT1100: 重复的资源。type:MANIFEST, name:1, l
2010-05-25 19:30:00
1677
1
转载 C++中的文件输入/输出
标题 C++中的文件输入/输出(1):你的第一个程序 Kusk(翻译) 关键字 C++ 文件 FileI/O 入门 出处 http://www.cpp-home.com/FileIO_tutorial.php C++中的文件输入/输出(1)原作:Ilia Yordanov, loobian@cpp-home.com 简介本教程将以C++最基本的文件I/O(输出/输
2010-05-19 10:11:00
773
转载 C++ sizeof 使用规则及陷阱分析
1、什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type s
2010-05-17 09:52:00
401
转载 C/C++ 中的移位操作拾遗
引言最近笔者一直在做JPEG的解码工作,发现用完全使用哈夫曼树进行解码比较费时,而使用表结构存储编码和值的对应关系比较快捷,但是也存在比较难处理的地方,比如解码工作通常是以位为单位的操作,这里必然会涉及到移位操作,而笔者之前对位的操作很少,经验很欠缺,经过这次历练终于发现了一个自己曾经忽视的东西,那就是C/C++中的移位操作容易出错的情况。1、什么样的数据类型可以直接移位char、sh
2010-05-17 09:42:00
697
转载 Sizeof与Strlen的区别与联系(转)
Sizeof与Strlen的区别与联系(转)1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以/0结尾的。sizeof还可以用函数做参数,比如: short f
2010-05-12 16:53:00
338
转载 Compiling Hydrax 0.5.1 with Ogre 1.7
Compiling Hydrax 0.5.1 with Ogre 1.7 (Cthuga)Heres a quick guide to compile the new Hydrax with the new Ogre.Note that the changes are backwards compatible, so they will work con 1.6 tooSimpleGri
2010-04-28 10:11:00
737
转载 材质脚本属性
材质脚本属性 顶层Material属性 属性名 值的格式 描述lod_distances [ ... ] LOD的距离列表receive_shadows | 阴影是否会投在这个物体上(默认为on) transparency_
2010-04-27 11:10:00
484
原创 不能将参数 1 从“std::string”转换为“const wchar_t *”
string pn;fstream iof;iof.open(pn,ios::in);open不能将参数 1 从“std::string”转换为“const wchar_t *”iof.open(pn.c_str(),ios::in);
2010-04-21 22:01:00
6242
转载 string转换为char*
string 是c++标准库里面其中一个,封装了对字符串的操作 把string转换为char* 有3中方法: 1。data 如: string str="abc"; char *p=str.data(); 2.c_str 如:string str="gdfd"; char *p=str.c_str(); 3 copy 比如 string str="hello"; char p[40]; s
2010-04-19 09:27:00
601
转载 节点的删除 - 同时删除所有绑定要节点上的对象
1.关于节点的删除: 1.分析: 0.SceneManager从节点列表中删除节点 1.要从父节点中删除该节点. 2.基于Ogre设计的设计.SceneNode没有提供销毁movableObject对象的函数.但是有解绑与遍历movable的能力.此问题简单为解绑movable 3.节点上一般都拥有一系列的MovableObject对象.绑定在其上的MovableObj
2010-04-08 20:37:00
965
转载 itoa函数
itoa函数 #include#includeint main(){ int num = 10; char str[100]; itoa(num, str, 2); printf("%s/n", str); return 0;}itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是目标字符串,第三个参数是转移数字时所用 的基数。在上例中,转换基数为1
2010-04-02 14:44:00
1108
转载 一个将string转换为 const* char的函数
const * char c_str() 一个将string转换为 const* char的函数。 string的c_str()返回的指针是由string管理的。它的生命期是string对象的生命期。然后可以按C的方式使用这个指针,或把它的内容复制出来。 例如: string s; cin>>s; const char *ch=s.
2010-04-01 20:09:00
10516
转载 从int 到string的几种方法
从int 到string的几种方法 1. int sprintf( char *buffer, const char *format [, argument] ... ); 例如: int ss; char temp[64]; string str; ss = 1000; sprintf(temp, "%d", ss);
2010-03-31 19:55:00
514
转载 Math.clamp(number,lo,hi) +
Math.clamp(number,lo,hi) +SWiSH Player Support SWF4 or later - Supported Internally Syntax Math.clamp(number, lo, hi) Arguments All are numbers or expressions. number : Value to be clamped. lo : Low
2010-03-31 15:15:00
5829
转载 wxWidgets 中各字符串格式转换
在C++里常用类型转换感觉很杂,不好用;跟C#没得比:可以强类型转换,还有convert通用的转换,非常方便的说。刚用wxwidget时类型转换也是一头大,了解后发现要比MFC简洁好用多,接口也容易记住。下面上WXWIDGET常用类型转换:一、wxstring与其他类型转换1.1 int to wxString: wxString str = wxString::Format(wxT("%i"),
2010-03-26 15:15:00
2695
原创 开始
1.OGRE1.7.0 + wxWidgets2.8.0不打算使用ETM插件,而是用OGRE1.7.0自带的terrain component,OGRE1.7.0采用了MIT授权 2.Plugin_OctreeSceneManager:以八叉树空间管理为基础的OctreeSceneManager(八叉树场景管理器——OSM)。同时包含了从其中派生出来的T
2010-03-19 08:22:00
669
转载 CEGUI安装、编译、运行总结
花了两天时间,总算把Sample下的例子跑成功了,真不容易啊,呵呵,现把遇到的问题解决等做个小小的总结吧,供初学者交流参考,若有说错的地方,欢迎指正。1、 下载:http://www.cegui.org.uk/wiki/index.php/Downloads最新版本为0.7.1,点进去后会发现有多个download链接,简单翻译下:a) CEGUI 0.7.1 Lib
2010-03-18 09:48:00
1769
1
转载 手把手教你如何配置和编译ogre 1.7.0 + cegui 0.7.1
http://www.cnblogs.com/oiramario/archive/2010/03/03/1677461.html ogre 1.7.0的下载、配置和编译指南----------------------------------------------- 1. ogre 1.7.0的下载地址:https://sourceforge.net/projects/ogre/file
2010-03-17 21:59:00
925
转载 VS2005的fstream对于中文路径支持
几天发了这篇《用fstream对二进制文件的读写》,有朋友指出了VS2005的fstream对于中文路径支持不好的bug。我想大概是因为VS2005更加重视了对字符串的全球化支持,所以鼓励我们使用unicode编码的字符串,对于MBCS之类的支持可能就疏忽了吧。 我搜索了一下这个问题的解决,参考了如下资料写了演示代码。fstream 和 中文路径 c++博客 About unicod
2010-03-14 16:39:00
598
转载 wxstring和string转换
由于wxWidget主要使用wxString字符串类型,而C++程序员经常使用STL,因此存在wxString与std::string之间的转换,下面举例来说明它们之间的转换. 1. std::string -> wxString string strstring = "string"; wxString
2010-03-14 13:34:00
3297
原创 wxWidgets中获得屏幕分辨率
需要包含头文件#include 使用静态函数:int width = wxSystemSettings::GetMetric(wxSYS_SCREEN_X, NULL);int height = wxSystemSettings::GetMetric(wxSYS_SCREEN_Y, NULL);获得当前系统的屏幕分辨率的大小.
2010-03-08 18:06:00
1857
原创 typedef的四个用途和两个陷阱
用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针 虽然: char *
2010-03-06 20:09:00
400
转载 在VS2005中配置LUA
辛苦写了1小时,居然没了。。。。这是第2次写的东西。1、编译LUA第1步:从官方主页www.lua.org下载Lua源代码,最新版本为5.1.2。解压之后找到“src”文件夹,这里面就是Lua了,不过还不能直接使用。第2步:使用任意ANSI C编译器,在这里使用VS2005编译LUA。具体步骤如下:1、新建一个空的Console工程,在这里该工程名暂为“lua”2、将src中的文件全部
2010-03-05 15:18:00
672
Windows 程序设计
2009-05-04
3D游戏与计算机图形学中的数学方法
2009-04-27
3D Math Primer for Graphics and Game Development
2009-04-27
LaTeX科学文件处理软件入门
2009-04-27
掌握和精通Matlab
2009-03-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人