
C/C++
believefym
这个作者很懒,什么都没留下…
展开
-
[C/C++]最大公约数的递归代码
int zdgys(int a, int b)...{ if(b!=0) return zdgys(b,a%b); return a;}原创 2007-03-09 10:28:00 · 3074 阅读 · 1 评论 -
[c/c++]构造函数、析构函数中可不可以抛出异常
using namespace std;class A...{public: A() ...{ cout "construction fun" endl; throw 1; } ~A() ...{ cout "destruction fun " endl; throw 2; }};int mai原创 2007-10-21 22:23:00 · 5728 阅读 · 0 评论 -
[c/c++]宏定义,#,##
# —— 字符串##——连接两个参数#include iostream>using namespace std;#define TEST(pid) (cout#define TEST2(p) (coutint main(){ int para3 = 3; int para2 = 2; TEST(2); //cout TEST(3); //cou原创 2007-10-21 22:25:00 · 12409 阅读 · 7 评论 -
[c/c++]A a();与A a;
#include iostream>using namespace std;class A...{public: A() ...{ cout "construction1 fun" endl; } A(int) ...{ cout "construction2 fun" endl; }};int main()...{原创 2007-10-23 09:54:00 · 2895 阅读 · 2 评论 -
[c/c++]如何声明函数指针数组
#include stdlib.h>#include stdio.h>//typedef void (*pf) (); void f1(){};void f2(){};int main(){ void (*pf[2]) ()=...{f1,f2}; system("pause"); return 0;}..................#include st原创 2007-10-21 22:27:00 · 2852 阅读 · 1 评论 -
[c/c++]临时变量、局部变量,return的效率
如果函数返回值是一个对象,要考虑 return 语句的效率。例如 return String(s1 + s2); 这是临时对象的语法,表示“创建一个临时对象并返回它” 。不要以为它与“先创建一个局部对象 temp 并返回它的结果”是等价的,如 String temp(s1 + s2); return temp; 实质不然,上述代码将发生三件事。首先,temp 对象被创建,同时完成原创 2007-10-29 13:56:00 · 4441 阅读 · 1 评论 -
[c/c++]函数的隐藏
#include iostream>using namespace std;class B...{public: void f(int) const ...{ cout"B::f int"endl; } void f(double) const ...{ cout"B::f double"endl; }};class D: pub原创 2007-10-29 14:34:00 · 1526 阅读 · 0 评论 -
[c/c++]析构函数virtual相关
基类的构造函数、析构函数、赋值函数都不能被派生类继承。#include iostream>using namespace std;class A...{public: A()...{cout"A constructor"endl;} ~A()...{cout"A desstructor"endl;}};class B : public A...{public: B().原创 2007-10-29 22:00:00 · 1388 阅读 · 0 评论 -
[c/c++]函数参数缺省值
参数缺省值只能出现在函数的声明中,而不能出现在定义体中。 例如: void Foo(int x=0, int y=0); // 正确,缺省值出现在函数的声明中 void Foo(int x=0, int y=0) // 错误,缺省值出现在函数的定义体中 { … } 为什么会这样?我想是有两个原因:一是函数的实现(定义)本来就与参数是否有缺省值无关,所以没有必要让缺省值出现原创 2007-10-29 15:15:00 · 18966 阅读 · 8 评论 -
[C/C++]一道指针,内存布局的笔试题[摘自优快云]
#include stdio.h>int main()...{ int a[5]=...{1,2,3,4,5}; int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int )a+1); printf("%x,%x",ptr1[-1],*ptr2); return 0;} 第一个,&a原创 2007-11-30 16:06:00 · 1546 阅读 · 0 评论 -
[C/C++]数组的引用、多维数组
数组名当参数传递的时候会退化为指针,数组长度没有实际意义,反而会误导void foo(int* a) ;void foo(int a[]);void foo(int a[10]);以上三个写法等价。不想让数组退化为指针,可以通过传递数组的引用来实现void foo(int (&a)[10]);这个函数只能接受长度为10的int型数组。================原创 2007-12-03 15:56:00 · 1251 阅读 · 0 评论 -
[c/c++]关于const_cast
#include iostream>using namespace std;class CCTest ...{public: void setNumber( int ); void printNumber() const;private: int number;};void CCTest::setNumber( int num ) ...{ number = num; }原创 2007-10-21 21:33:00 · 1009 阅读 · 0 评论 -
[c/c++] "? :" 在何种状况下不能修改为"if (..) {..} else {..}"?
#include iostream>using namespace std;void f(double)...{ cout "double" endl;}void f(int)...{ cout "int" endl;}int main()...{ f(true ? 1 : 1.0); if(true) ...{ f(1); }原创 2007-10-22 13:32:00 · 835 阅读 · 0 评论 -
求32位整数二进制1的个数
#include iostream> using namespace std; int findone(unsigned int n){ for(int i=0;n>0;n>>=1) i+=(n&1); return i; } int main(){ int n; cin>>n; coutfindone(n)endl; r原创 2007-03-13 19:55:00 · 1268 阅读 · 0 评论 -
VS2005(VC8) 使用 Boost
Chui-Wen Chiu http://chuiwenchiu.spaces.live.com 2006.12.12 測試環境: [1] Widnows XP Professional [2] Visual Studio 2005 Team Studio(VC8.0) [3] WinCvs 1.3 1. 下載 Boost 透過 CVS 下載最新版 cv转载 2007-08-07 19:47:00 · 1872 阅读 · 0 评论 -
用devcpp配置控制台编译的gcc、g++环境
devcpp自带了mingw编译器,假设devcpp的安装目录为D:/Dev-Cpp 配置系统环境变量如下: 1.DEVCPP_HOME=D:/Dev-Cpp 2.C_INCLUDE_PATH=%DEVCPP_HOME%/include 3.CPLUS_INCLUDE_PATH=%DEVCPP_HOME%/include/c++/3.4.2;%DEVCPP_HOME%/include/c++/3.原创 2007-08-07 19:50:00 · 10570 阅读 · 1 评论 -
使用devcpp(mingw)编译产生JNI中的dll
之前在eclipse下jni初试一文中只说明了使用vs2005的编译器cl编译产生dll,用devcpp带的mingw编译器一直没有成功,原来问题出在gcc的编译命令。 关于mingw的环境配置参看用devcpp配置控制台编译的gcc、g++环境一文 基本的步骤参看eclipse下jni初试,使用mingw编译产生dll的gcc命令如下: gcc -Wall -D_JNI_IMPLEMENTATI原创 2007-08-07 19:52:00 · 1970 阅读 · 0 评论 -
VS2005(VC8)编译、配置Boost.regex
1,配置vs2005的控制台编译环境 (参考这里) 2,cd %Boost%/libs/regex/build cmd>nmake -fvc80.mak 3,添加%Boost%到vs2005的include目录;添加%Boost%/libs/regex/build/vc80到library目录 4,测试 //原创 2007-08-07 19:53:00 · 1884 阅读 · 0 评论 -
STL里的multimap使用简介
在“使用 库创建关联容器” 一文中,我们讨论了标准库中的 map 关联容器。但那只是 map 容器的一部分。标准库还定义了一个 multimap 容器,它与 map 类似,所不同的是它允许重复键。这个属性使得 multimap 比预想的要更有用:比如在电话簿中相同的人可以有两个以上电话号码,文件系统中可以将多个符号链接映射到相同的物理文件,或DNS服务器可以将几个URLs映射到相同的IP地址。在转载 2007-05-28 10:23:00 · 80650 阅读 · 6 评论 -
字节对齐
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只转载 2007-08-23 09:48:00 · 875 阅读 · 0 评论 -
votalite关键字
MSDN:”The volatile keyword is a type qualifier used to declare that an object can be modified in the program by something such as the operating system, the hardware, or a concurrently executing thr原创 2007-08-29 09:50:00 · 2581 阅读 · 0 评论 -
c/c++备忘(持续更新)
宏定义,#,## # —— 字符串##——连接两个参数 #include iostream>using namespace std;#define TEST(pid) (cout#define TEST2(p) (coutint main(){ int para3 = 3; int para2 = 2;原创 2007-08-28 20:54:00 · 816 阅读 · 0 评论 -
[c/c++]const修饰指针
int a = 10; int b = 20; const int* p1 = &a; //ok p1 = &b; //ok //*i = 11; //error int* const p2 = &a; //ok *p2 =原创 2007-10-21 22:28:00 · 952 阅读 · 0 评论 -
[C/C++]函数重载、作用域、隐藏
void print(void);void print(int);void print(double);int main()...{ void print(int); //print(); //error,be hidden print(1); //ok //print(1.1); //error, be hidden}void print(void)原创 2007-12-05 10:27:00 · 1213 阅读 · 0 评论