- 博客(57)
- 资源 (18)
- 收藏
- 关注
原创 C++标准编程:虚函数与内联
我们曾经在讨论C++的时候,经常会问到:“虚函数能被声明为内联吗?”现在,我们几乎听不到这个问题了。现在听到的是:“你不应该使print成为内联的。声明一个虚函数为内联是错误的!” 这种说法的两个主要的原因是(1)虚函数是在运行期决议而内联是一个编译期动作,所以,我们将虚函数声明为内联并得不到什么效果;(2)声明一个虚函数为内联导致了函数的多分拷贝,而且我们为一个不应该在任何时
2009-12-30 17:24:00 756
原创 线性表--顺序储存结构
我意识到数据结构的重要性了,决定把把各种类型写一遍,熟练一下,我觉得对这些应该达到了如指掌的地步,才算可以... ////////线性表 顺序储存 ////////code by Apan #include using namespace std; ////////定义线性表
2009-12-30 17:22:00 767
原创 “指向const对象的指针” 和 “const指针”
const对象定义的时候必须初始化。“指向const对象的指针”定义的时候可以不初始化,因为指针本身不是const,可以让指针指到另一个对象。“const指针”定义的时候必须初始化,因为它是常量。 const double dvall = 3.15; const double *cpd; const double val1 = 3.15;
2009-12-30 17:21:00 598
原创 如何理解c和c++ 的复杂类型声明
int main(int argc, char* argv[]) { /**//* ************************************************************ 指针 **************************************************************/
2009-12-30 17:20:00 632
原创 C++ using namespace std
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 一 : 和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义
2009-12-30 17:19:00 566
原创 c++ 中头文件重复定义的问题
一、同一头文件中类嵌套的疑问 假设我们有两个类A和B,分别定义在各自的头文件A.h和B.h中,但是在A中要用到B,B中也要用到A,像下面的写法是错误的: class B; class A { public: B b; }; class B {
2009-12-30 17:18:00 1207
原创 C++ 中指针和引用的什么区别
指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“. ”),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量
2009-12-30 17:17:00 519
原创 C/C++ qsort()快速排序的用法
C语言中排序的算法有很多种,系统也提供了一个函数qsort()可以实现快速排序。原型如下:void qsort(void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *));它根据comp所指向的函数所提供的顺序对base所指向的数组进行排序,nmem为参加排序的元素个数,size为每个
2009-12-30 17:16:00 697
原创 C++模版全掌握(实例)
下面列出了模版的常用情况: //1. 模板类静态成员 template typename T> struct testClass { static int _data; }; template int test
2009-12-30 17:15:00 804
原创 C++容器:顺序容器,关联容器
容器主要分为顺序容器和关联容器。 一,顺序容器 vector--连续存储的元素,单向的 list----由节点组成的不连续存储的双向鏈表 deque--连续存储的元素,双向的 1,顺序容器主要分为vector, deque, list。 2,容器内的元素类型必须至少满
2009-12-30 17:14:00 836
原创 C++中const与static在面向过程代码中的异同
const与static都有静态的含义,当声明一个变量在其前加写const或static,它会将值一直保持下去。 但const实际实际上声明了一个完全静态的常量,除了在声明时可以给它赋值一次,在之后的任何代码中都不能再对它进行赋值。所以在声明const常量时,必须对其赋值,否则这个常量将没有任何意义。当然,const是左结合的,所以在用到指针时,要注意它只使得右侧紧挨着的量成为
2009-12-30 17:13:00 585
原创 C++构造函数的幕后工作
写一个简单的类: class CParentA { public: CParentA() {} public: int parenta_a; int parenta_b; public: virtual void parenta_f1() {this->parenta_a = 0x10;} virtual void parenta_f
2009-12-30 17:12:00 652
原创 加入代码以检查C++中的内存泄漏
内存泄漏是编程中常常见到的一个问题,我所遇过的原因有两个:1.分配完内存后忘记回收 2.代码有问题,造成想回收却无法回收,例如: int* p=new int; p=new int; //p指针修改,原来申请内存的地址没有记录下来,于是无法释放 下面介绍如何检查内存泄漏: 1.包含头文件和定义 #define _CRTDBG_M
2009-12-30 17:10:00 632
原创 C++类成员函数的重载、覆盖与隐藏
1. 重载、覆盖与隐藏 1).重载:成员函数具有以下的特征时发生"重载" A.相同的范围(同一个类中) B.函数的名字相同 C.参数类型不同(不能进行隐式类型转换) D.Virtual关键字可有可无 2).覆盖(也叫"继承"):指派生类函数覆盖基类函数,特征是:
2009-12-30 17:09:00 639
原创 C++:七种qsort排序方法
一、对int类型数组排序 C/C++ codeint num[100];Sample:int cmp ( const void *a , const void *b ){return *(int *)a - *(int *)b;}qsort(num,100,sizeof(num[0]),cmp); 二、对char类型数组排序(同int类
2009-12-30 17:02:00 1096 2
原创 C++ 代码优化
谈到优化,很多人都会直接想到汇编。难道优化只能在汇编层次吗?当然不是,C++层次一样可以作代码优化,其中有些常常是意想不到的。在C++层次进行优化,比在汇编层次优化具有更好的移植性,应该是优化中的首选做法。 确定浮点型变量和表达式是 float 型 为了让编译器产生更好的代码(比如说产生3DNow! 或SSE指令的代码),必须确定浮点型变量和表达式是 float
2009-12-30 17:01:00 600
原创 C++动态建立矩阵及矩阵相乘
#include #include int ** create(int m,int n){ int i,j; int **p = new int*[m]; cout for(i=0;i { p[i] =new int[n]; for(j=0;j {
2009-12-29 21:37:00 2733
原创 C++直接操纵虚函数表方法
以下代码没有什么实用价值,最多拿来加深一下对虚函数表的印象,一时性起,想直接操纵虚函数表。这段代码只尝试了在VS2005上编译通过,没有在其他编译器上尝试,它并不具有可移植性。 大家都知道C++的虚函数机制通常是通过一个虚函数表来实现的,C++不对内存访问做限制,所以我们可以通过指针自己访问虚函数表,然后进行操作。 #include using namespace
2009-12-29 21:37:00 525
原创 C++ 运算符优先级列表
Precedence Operator Description Example Associativity 1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an ob
2009-12-29 20:56:00 401
原创 C++动态创建二维数组
方法1:用一维数组代替二维数组int n,m;cin>>n>>m;int* a = new int[n*m];for(int i = 0 ; i{coutfor(int j = 0 ; j{a[i*m+j] = i+j;cout}}coutdelete[] a;运行结果:0 00491BB0 1 00491BB4
2009-12-29 20:55:00 527
原创 C++中使用调试器逐步跟踪程序
在VC++6.0中的单步调试: 调试重要的几个键: F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点。 F5调试状态运行程序,程序执行到有断点的地方会停下来。 F10单步执行程序。 CTRL+F10运行到光标所在行。 F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面。
2009-12-29 20:54:00 892
原创 C和C++的学习历程
一家之言,欢迎拍砖哈。 1、可以考虑先学习C. 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。 C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我
2009-12-29 20:54:00 574
原创 C++中创建持久对象的方法
持久对象(persistentobjects)广泛应用于游戏、分布式数据库系统、多媒体以及图形应用程序中。目前C++并不直接支持持久性(persistence)(但有一些在C++未来版本中添加持久性和反射(reflection)的建议)。持久对象可以在创建它的程序的作用域之外保持自身状态。把对象写入一个文件并在以后重建之,或者把对象传送到一台远程机器,就是这样的例子。对持久性的支持并不
2009-12-29 20:53:00 508
原创 C/C++中的结构体(struct)
什么是结构体?简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数
2009-12-29 20:51:00 553
原创 C++ 二叉树的描述
/*对二叉树的操作主要通过递归实现,递归能把一个复杂的问题最大程度的简化。以前实现二叉树主要通过C语言实现的,现在正在学习CORE C++,故决定用C++重新实现...*/ #ifndef _TREE_H_ #define _TREE_H_ #include using namespace std; template
2009-12-29 20:50:00 483
原创 C++ 异常处理 catch(...)
如果要想使一个catch block能抓获多种数据类型的异常对象的话,怎么办?C++标准中定义了一种特殊的catch用法,那就是” catch(…)”。感性认识1、catch(…)到底是一个什么样的东东,先来个感性认识吧!看例子先:int main(){try{cout //这里抛出一个异常(其中异常对象的数据类型是int,值为1)throw 1;}
2009-12-29 20:50:00 689
原创 函数调用方式的区别
通常在使用VC进行函数定义时会指定该函数调用方式,诸如: int __stdcall max(int a, int b) { return a>b?a:b; } int __cdecl min(int a, int b) { return a } bool
2009-12-29 20:47:00 470
原创 C++ 的CIN和COUT操作符
C++中的CIN和COUT是两个操作符(operator),且是左操作符,相同于+, -等操作符,而且与这些操作符一样,返回的表达式值为左值。看下面这个例子: #include int main(int argc, char **argv) { std::cout int v1, v2; std::
2009-12-29 20:11:00 625
原创 c++抽象类的简单示例
/** 抽象类示例*/#include #include using namespace std;/** AbstractClass是抽象类*/class AbstractClass {public:AbstractClass() {}virtual ~AbstractClass() {}// 纯虚函数virtual voi
2009-12-29 18:41:00 1023
原创 C++函数重载
//函数重载的使用#includeusing namespace std;int max(int,int);int max(int,int,int);// 函数如果定义在后应该先声明在调用void main(){cout}int max(int m1,int m2){ return(m1>m2)?m1:m2;}//三目运算int max(int m
2009-12-29 18:41:00 445
原创 C++ 常用排序法
首先介绍一个计算时间差的函数,它在头文件中定义,于是我们只需这样定义2个变量,再相减就可以计算时间差了。函数开头加上 clock_t start = clock(); 函数结尾加上 clock_t end = clock(); 于是时间差为: end
2009-12-29 18:40:00 504
原创 C++ 常用排序法研究
首先介绍一个计算时间差的函数,它在头文件中定义,于是我们只需这样定义2个变量,再相减就可以计算时间差了。函数开头加上 clock_t start = clock(); 函数结尾加上 clock_t end = clock(); 于是时间差为: end - start 不过这不精确的
2009-12-29 18:38:00 438
原创 C++ 面向过程与面向对象的区别
“面向过程”是一种以事件为中心的编程思想。 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 “面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想。 面向对象的程序设计(Object-Oriented Programming,简记为OOP) 比如以公
2009-12-29 18:37:00 2003
原创 C++ 中关于指针入门的最好的文章
什么是指针? 其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据。这是一个非常重要的概念,有很多程序和算法都是围绕指针而设计的,如链表。 开始学习 如何定义一个指针呢?就像你定义一个其它变量一样,只不过你要在指针名字前加上一个星号。我们来看一个例子:下面这个程序定义了两个
2009-12-29 18:22:00 535
原创 C++ 深入学习C语言知识点checklist——测试你掌握C的程度
字符串 学习时间:1.5W(“W”周,下同) 知识点checklist strlen()函数的返回值是什么类型的? 字符串strlen()的值,是否和他占据的内存空间相同? 你是否知道strcpy函数存在的潜在风险?如何避免? 如果一个字符串没有字符串结束符,而调用str开头的库函数,会发生什么? Strcpy(),strcat(),strcmp(),
2009-12-29 18:13:00 1366
原创 C++ 中友元的一些总结
1,friend申明一个友元friend一般为一句申明式,它位于一个类的内部,它申明一个类或者一个函数为该类的友元。friend并不是定义一个成员函数,所以friend放在public,protected或者private前都可以,完全是一样的。做为一个友元,即表示在该类或者该函数内部可以访问这个类的私有成员,你和朋友之间是不是应该没有什么隐藏的呢。例子:class A
2009-12-29 17:35:00 515
原创 C++ 运算符重载
运算符重载l 运算符重载:C++能将运算符(+、-、*、/等)的定义扩展到运算分量是对象的情况,并且重载后运算符的运算顺序和优先级不变,这样使得C++代码更直观,更易读。l 示例Class A{ ……};A a,b,c,d;d=a+
2009-12-17 23:56:00 584
原创 C++ 继承
继承l 继承规则:若逻辑上B是A的“一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。l 示例Class person{Public:void fun();private:tring sex;int old
2009-12-17 23:54:00 572
原创 C++--多态
多态l 多态:当子类和基类存在同形函数(返回值相同,函数名相同,形参相同),此时若将基类对象作为函数形参则会存在调用混淆(无论传递的实参是子类对象还是基类对象都会只调用基类的成员函数),为了解决这种问题C++引入了多态,多态就是让程序能在运行时能自动根据实参类型自动确认调用哪个函数的能力。l 示例class A{
2009-12-17 23:49:00 550
原创 杂谈: Google的狠
Google即将推出的Google Phone,有两个麦克风。其中一个置于背面,用来专门接收背景噪音。当然,接收是手段,目的是为了更好地抵消主麦克风中的背景噪音,以显著提高语音清晰度。 从创新的角度来看,我认为,这和往常的案例大致相似:Google并不是第一个想到者,却是第一个大规模实践者。不过,我更想从另一个角度看待此事:Google是够“狠”的公司。 背
2009-12-16 23:05:00 578
共享内存数据库资料 Linux 数据库 共享内存1
2010-04-08
VC6.0+Mfc+Access 图书管理系统
2009-12-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人