
c/c++
lingang_
coding
展开
-
重新理解c++中的cout
大一我曾学过c++,但我觉得一点都没学会它,固然有老师教的不好的因素,但也因为自己没好好认识到这门语言该怎么学,因为那时什么都不懂。现在重新学一遍,希望有新的收获。#includeiostream> using namespace std; void main() { cout "hello world!"; }原创 2008-05-09 09:41:00 · 976 阅读 · 2 评论 -
实现一个自定义的String类
C++继承了C语言中以空字符结尾的C风格字符串以及包括strcpy()函数的函数库,但这些函数没有集成到面向对象的框架中,标准库中包含一个String类,它提供了一套封装好的数据以及处理这些数据的函数,使用这个类前可以先实现一下自定义的String类,以便熟悉这个框架。代码清单:#include #include using namespace std;clas原创 2008-09-21 14:57:00 · 4998 阅读 · 0 评论 -
C++经典面试题
1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已virtual可加可不加子类的空间里有父类的所有变量(static除外)同一个函数只存在一个实体(inline除外)子类覆盖它的函数不加virtual ,也能实现多态。在子类的空转载 2008-09-22 13:40:00 · 789 阅读 · 0 评论 -
C语言-time.h从头学
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。 关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) 1.概念 在C转载 2008-09-25 14:11:00 · 724 阅读 · 0 评论 -
printf 参数详解
#include #include int main(int argc, _TCHAR* argv[]){ float d=3.14; printf("d=%.10e/n",d); //这里输出的6位以后的都是垃圾数据了,不准确 char ch[20]; strcpy(ch,"123456780123"); int n = 2,m = 10;转载 2008-09-25 20:10:00 · 2200 阅读 · 0 评论 -
《C++primer》读书笔记——指针与typedef
在 typedef 中使用指针往往带来意外的结果。 请看下面一例:typedef string *pstring ;const pstring cstr ;请问 cstr 变量是什么类型? 简单的回答是const pstring 类型的指针,进一步来说 const pstring 代表的真实类型是什么?很多人认为真正的类型是:const string *cstr 也就是说原创 2008-10-16 21:32:00 · 652 阅读 · 0 评论 -
《C++primer》读书笔记——关于const引用
关于引用地球人都知道,俺就不提了。今天又看了下c++ primer中有关的const引用,又一次感受到了C++的复杂。const 引用是指向const 对象的引用。先看一例: const int ival = 1024; const int &refVal = ival; //正确 int &ref2 = ival; //错误 对于第二行代码,定原创 2008-10-13 22:39:00 · 535 阅读 · 0 评论 -
c与c++ static函数的区别
c与c++ static函数的区别c与c++ static函数的区别static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数下面就这三种使用方式及注转载 2008-11-20 21:48:00 · 1173 阅读 · 0 评论 -
C++的类型转换
仔细想想地位卑贱的类型转换功能(cast),其在程序设计中的地位就象goto语句一样令人鄙视。但是它还不是无法令人忍受,因为当在某些紧要的关头,类型转换还是必需的,这时它是一个必需品。 不过C风格的类型转换并不代表所有的类型转换功能。 一来它们过于粗鲁,能允许你在任何类型之间进行转换。不过如果要进行更精确的类型转换,这会是一个优点。在这些类型转换中存在着巨大的不同,例如把一个指向原创 2008-12-02 21:10:00 · 627 阅读 · 0 评论 -
深入分析 char * 和char []的区别
今天偶然发现对于char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确,于是在网上搜集了点资料,对堆和栈有了进一步的了解。程序演示:测试环境Devc++代码#include using namespace std;main(){ char *c1 = "abc"; char c2[] = "abc"; char *c3转载 2009-02-24 20:40:00 · 1123 阅读 · 0 评论 -
cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
挺不错的一篇文章,巩固下基础...1、cin>> 用法1:最基本,也是最常用的用法,输入一个数字:#include using namespace std;main (){int a,b;cin>>a>>b;cout}输入:2[回车]3[回车]输出:5用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束#include using namesp转载 2008-09-19 11:21:00 · 1441 阅读 · 1 评论 -
virtual copy constructor(虚复制构造函数)
构造函数不能是虚函数,因此从技术上讲,不存在虚复制构造函数。然而有时候程序需要通过传递一个指向基类对象的指针,创建一个派生类对象的拷贝。对于这种问题,一种常见的解决办法是,在基类中创建一个Clone()方法,并将其设置为虚方法。Clone()方法创建当前类对象的一个拷贝并返回该拷贝。由于每个派生类都覆盖了Clone()方法,因此它将创建派生类对象的一个拷贝。示例代码如下:#incl原创 2008-09-17 17:59:00 · 2043 阅读 · 0 评论 -
c++ 中的一次定义规则
在c++ 中,函数定义和变量定义都遵从“一次定义规则”:就是定义只能有一份,但是可以有多个声明;而inline函数和const常量则是此规则的例外:inline函数可以在每个文件中都有一份相同的实现(一般被置于头文中),而const常量则是作用域被限制在它所在的文件中,一出文件就不可见.例:// .h文件const int seq_cnt = 6;const vectorint>* (s原创 2008-05-11 10:46:00 · 1393 阅读 · 0 评论 -
设计一个泛型算法
算法的目的很简单,找出小于(大于)elem_size的元素并打印.先贴上代码:#include algorithm> //泛型算法#include functional> //function object#include vector>#include iostream>using namespace std;template typename InputIterator,typenam原创 2008-05-12 13:23:00 · 535 阅读 · 0 评论 -
a与a[0]一样吗?
先看一段代码:#includestdio.h>void main()...{ int a[5]=...{1,2,3,4,5}; int *p; p=(int *)(&a+1); printf("%d",*(p-1));}输出的结果是5而不是1.a和a[0]的地址虽然是一样的,但是a代表的是数组指针,a[0]代表的是整型指针,所以a+1和a原创 2008-05-12 21:54:00 · 1560 阅读 · 0 评论 -
一个简陋的文字计数器
通过这个小程序,使我对map,set,fstream 类的使用有所熟悉.程序摘自《essential c++》,我加了注释. #include map>#include set>#include string>#include iostream>#include fstream>using namespace std;void initialize_exclusion_set(sets原创 2008-05-13 12:34:00 · 1522 阅读 · 0 评论 -
头文件与实现文件的关系
原文地址:http://blog.youkuaiyun.com/bm1408/archive/2006/02/22/606382.aspx你理解简单的含义吗?关于两者以前的关系,要从N年以前说起了~ long long ago,once aupon a time .......那是一个被遗忘的年代,在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代。那时的人们写了很多的.c(.cpp)文件,渐原创 2008-05-12 21:45:00 · 842 阅读 · 1 评论 -
迷途指针
迷途指针也叫失控(wild)指针或悬浮(dangling)指针,是将delete用于指针(从而删除它所指的内存),但没有将它设置为空引发的,如果随后你在没有重新赋值的情况下使用该指针,后果是不可预料的:程序崩溃算你走运。请看实例代码:typedef unsigned short int USHORT;#include int main(){ USHORT *原创 2008-09-07 09:44:00 · 1007 阅读 · 0 评论 -
const指针右边法则
声明指针时,可以在类型前或后使用关键字const,以下是一些合法声明:const int *pOneint * const pTwoconst int * const pThree然而这些声明的含义却是不同:pOne是一个指向整型常量的指针。它指向的值不能修改。pTwo是一个指向整型的常量指针。它指向的值可以修改,但pTwo不能指向其他变量。pThree是一个指向整原创 2008-09-07 10:47:00 · 620 阅读 · 0 评论 -
c++中的数据类型转换
程序清单: 将int转换为Counter#include using namespace std;class Counter{public: Counter(); Counter(int val); //转换构造函数 ~Counter() {} int GetItsVal() const { return itsVal; }priva原创 2008-09-14 17:19:00 · 515 阅读 · 0 评论 -
C++中的浅复制与深复制
默认构造函数将作为参数传入的对象的每个成员变量复制到新对象的成员变量中,这被称为成员浅复制。这虽然对大多数成员变量可行,但对于指向自由存储区中对象的指针成员变量不可行。成员浅复制只是将对象成员变量的值复制到另一个对象中,两个成员变量的指针最后指向同一个内存块,当其中任何一个指针被delete时,将生成一个迷途指针,程序将处于危险之中。如图:假如旧对象指针成员变量所指堆内存被释放后,此时原创 2008-09-14 13:49:00 · 1629 阅读 · 0 评论 -
避免在代码中直接使用delete关键字
避免在代码中直接使用delete关键字,这需要:1、在定义单个数据对象时尽量在stack上分配内存;如果必须使用free store内存的话,则使用std::auto_ptr定义2、使用传引用方式传参,避免使用传指针的方式,这样既可以免去指针判NULL的检查,又可以在不失去对象所有权的前提下传递std::auto_ptr 对象3、在定义数组时,使用std::vector vBuffer转载 2010-03-30 10:25:00 · 990 阅读 · 0 评论