4.C/C++
文章平均质量分 82
memewry
hi
展开
-
关于C++虚继承、虚函数继承的几个例子
今天看虚继承以及虚函数继承时写了几个实例来加深一下理解。相关技术原理参见:c++虚继承对象的内存布局代码1:没有虚继承的情况下#includeusing namespace std;class A//定义基类A{public:A(int i){ cout<<"A cons"<<endl;} void virtual print(){cout<<"aaa"<<endl;};原创 2012-08-04 20:58:46 · 2933 阅读 · 0 评论 -
C++什么样的类需要编写拷贝构造函数
转载:http://blog.csdn.net/keyouan2008/article/details/57730311-什么时候会用到拷贝构造函数? 2-什么时候有必要手动写拷贝构造函数?1-什么时候会用到拷贝构造函数? 任何你想利用一个已有的类实例给另一个类实例赋值时,这种赋值可能是显式的,也可能是隐式的显式:classa_1=class_2;隐式:函数转载 2012-07-31 14:24:41 · 1545 阅读 · 0 评论 -
ASSERT用法总结
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#i转载 2012-06-20 16:10:31 · 716 阅读 · 0 评论 -
C和C++动态内存的分配
转载:http://www.cnblogs.com/zhj202190/archive/2011/05/11/2043620.html一、C语言动态内存分配 要实现动态内存的分配,除了利用含指针成员的结构体之外,还需利用C语言提供的几个标准库函数。(使用时应包含头文件“alloc.h”或“malloc.h”或“stdlib.h”) 1.malloc函数转载 2012-05-11 15:34:00 · 501 阅读 · 0 评论 -
C/C++中作用域详解
转载:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777433.html 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域)。变量的有效作用域从它的定义点开始,到和定义变量之前最邻近的开括号配对的第一个闭括号。也就是说,作用域由变量所在的最近一对括号确定。(1) 全局变量:转载 2012-07-06 16:48:55 · 408 阅读 · 0 评论 -
C++中的指针与引用
指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因转载 2012-07-10 16:02:35 · 377 阅读 · 0 评论 -
STL之vector容器
转:http://www.cnblogs.com/nasser/archive/2011/04/30/2033351.html这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使转载 2012-07-31 23:08:37 · 549 阅读 · 0 评论 -
C/C++中extern关键字的用法
转载:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一转载 2012-07-06 16:13:50 · 824 阅读 · 0 评论 -
C/C++中volatile关键字详解
转载:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777432.html1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Languag转载 2012-07-06 16:15:37 · 478 阅读 · 0 评论 -
C语言内存管理详解
转载:http://club.topsage.com/thread-443540-1-1.html 伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的转载 2012-07-29 21:01:54 · 1262 阅读 · 0 评论 -
C++中Static关键字详解
C++中Static的完全解析C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Exampl转载 2012-07-05 20:56:32 · 642 阅读 · 0 评论 -
C语言比较经典的知识点
一、预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL (PS:UL必须要要加上)考点: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的原创 2012-08-29 23:06:52 · 865 阅读 · 0 评论 -
关于const 和&修饰函数返回值的问题
可以说这曾经是困扰我好几天的一个问题,而且还在百度知道上发了贴,最终弄明白了。现在把截图贴出来关于这个问题的解释如下:原创 2012-08-29 23:18:01 · 1162 阅读 · 2 评论 -
华为最新机试题2
华为面向2013年招聘笔试题 笔试题目(机试,共两题) 题目一:子串分离 题目描述: 通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 如果输入“abc def gh i d原创 2012-09-10 22:19:57 · 6603 阅读 · 4 评论 -
转载 CONST在函数声明中的应用
1.在一个函数声明中,const 可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。有如下几种情况,以下会逐渐的说明用法: A& operator=(const A& a); void fun0(const A* a ); void fun1( ) const; // fun1( ) 为类转载 2013-01-11 16:07:59 · 606 阅读 · 0 评论 -
20121010
1、 int x = 3,y=4,z=5;printf("%d",~((x^y)&&!z));输出结果 -12、char s[] = "912\0912";printf("%d",strlen(s));输出结果 33、int a[100][200];printf("%d",&a[50][4]-&a[0][3]);输出结果 10014、enum months{JA原创 2012-10-10 17:51:27 · 813 阅读 · 0 评论 -
数组名和数组名取地址
#include int main(){int a[5];printf("%d\n", a);printf("%d\n", &a);printf("%d\n", a + 1);printf("%d\n", &a + 1);printf("%d\n", &a[0] + 1);printf("---------------\n");printf("%d\n",sizeof(a));原创 2012-07-15 18:22:22 · 1252 阅读 · 0 评论 -
深入理解C++虚函数机制
参考:http://blog.csdn.net/hackbuteer1/article/details/7883531可以结合博文关于C++虚继承和虚函数继承的几个例子C++中虚函数的作用主要用于实现多态,关于多态,简而言之就是用父类指针指向其子类对象,然后通过父类的指针调用实际子类的成员函数。这种技术让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不便的代码原创 2012-09-15 22:17:54 · 948 阅读 · 0 评论 -
构造函数、析构函数抛出异常的问题
看到一道网易有关C++高级机制的面试题目:析构函数可以抛出异常吗?为什么不能抛出异常?除了资源泄露,还有其他需考虑的因素吗?于是在网上收集了一下资料,进行一个快速的学习。1. 抛出异常1.1 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为: throw 表达式;如果在try原创 2012-09-03 23:54:23 · 3235 阅读 · 0 评论 -
C++函数返回引用
转载:http://blog.csdn.net/keyouan2008/article/details/5741917一,c++函数的返回分为以下几种情况1)主函数main的返回值:这里提及一点,返回0表示程序运行成功。2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象。用函数返回值初始化临时对象与用实参初始化形参的方法是一样 的。如果返回类型不是引用,在调用函数的地转载 2012-07-31 14:43:54 · 695 阅读 · 0 评论 -
C++中const关键字详解
转载:http://www.cnblogs.com/StudyRush/archive/2010/10/06/1844690.html参考:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以转载 2012-07-06 11:00:31 · 387 阅读 · 0 评论 -
一道动态指针传递的问题
昨天有个同学让我做下面这道有关动态内存的题,做完后就写了这篇小文#includeusing namespace std;void GetMemory(char* p,int num){p = (char*)malloc(sizeof(char)*num);}int main(){char *str=NULL; GetMemory(str,100原创 2012-08-12 17:09:59 · 597 阅读 · 0 评论 -
BOOL , float, 指针变量与“零值”比较的if 语句
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n == 0 ) if ( n != 0 )以此类推。 请写出 BOOL flag 与“零值”比较的 if 语句:请写出 float x 与“零值”比较的 if 语句:请写出 char *p 与“零值”比较的 if 语句:转载 2012-04-18 16:50:04 · 667 阅读 · 0 评论 -
C++之模板
转载:http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/15/2138705.html有以下这样3个求加法的函数:int Add(int x,int y) { return x+y; } double Add(double x,double y) { return x+y; } long Add(l转载 2012-07-09 20:50:56 · 462 阅读 · 0 评论 -
define 和 typedef的区别
转载:http://it.100xuexi.com/ExtendItem/OTDetail.aspx?id=ba08ceff-70dd-4d3c-8b2c-3b039596bf9fTypedef和define都可以用来给对象取一个别名,但是两者却有着很大不同。1. 首先,二者执行时间不同关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能转载 2012-07-21 21:47:32 · 455 阅读 · 0 评论 -
C++复制构造函数跟赋值构造函数
更详细的内容进一步参考:区别拷贝构造函数和赋值函数1. 何时调用复制构造函数 复制构造函数用于将一个对象复制到新创建的对象中。也就是说,它用于初始化过程中,而不是常规的赋值过程中。类的复制构造函数原型通常如下: class_name(const class_name&); 它接受一个指向类对象的常量引用作为参数。例如,String类的复制构造函数的原型如下: Strin转载 2012-08-04 22:42:32 · 442 阅读 · 0 评论 -
参数传递时数组引用保护数组退化为指针
如下定义就得到一个数组的引用 类型名 (&变量明)[N];在进行参数的传递时,数组引用可以帮助我们防止数组退化为指针,而这是我们在编程中很难注意到的问题。下面来看一个实例:#include void each(int int_ref[10]){ std::cout for(int i=0;i转载 2012-07-18 23:32:12 · 2898 阅读 · 1 评论 -
C++ static,const,以及static const
const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。 static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。 在C++中,sta转载 2012-08-02 18:48:44 · 604 阅读 · 0 评论 -
基于Socket的TCP和UDP编程
作者:王珊珊,华清远见嵌入式学院讲师。一、概述TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(stream socket)的一种。UDP:用户数据报协议。UDP是一种无连接协议。UDP套接口是数据报转载 2012-04-20 18:23:16 · 665 阅读 · 0 评论 -
C语言中 字符数组和字符指针分析
#include int main(int argc, char *argv[]){ char day[15] = "abcdefghijklmn"; char* strTmp = "opqrstuvwxyz"; printf("&day is %x\n",&day); printf("&day[0] is %x\n",&day[0]); printf("day is %x转载 2012-06-24 23:38:33 · 491 阅读 · 0 评论 -
C++中iostream.h和iostream的区别
#include 非标准输入输出流#include 标准输入输出流C++中为了避免名字定义冲突,特别引入了“名字空间的定义”,即namespace。1,当代码中用时,输出可直接引用cout继承C语言的标准库文件,未引入名字空间定义,所以可直接使用。2,当代码中引入时,输出需要引用std::cout使用时,引入std::有以下方法:1.using namesp原创 2012-07-05 21:06:29 · 925 阅读 · 0 评论 -
[转] 彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则
一 :关于指针和堆的内存分配先来介绍一下指针: 指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类型就有大小,在达内的服务器上或者普通的PC机上,都是4个字节大小,里边只是存储了一个变量的地址而已。不管什么类型的指针,char * ,int * ,int (*) ,string * ,float * ,都是说明了本指针所指向的地址空间是什么转载 2012-07-05 11:29:58 · 491 阅读 · 0 评论 -
CopyMemory
Copies a block of memory from one location to another.SyntaxC++void CopyMemory( __in PVOID Destination, __in const VOID *Source, __in SIZE_T Length);原创 2012-06-19 15:13:03 · 5439 阅读 · 0 评论 -
C++中类的构造函数与析构函数(成员初始化列表)
转:http://www.cnblogs.com/qlwy/archive/2011/08/04/2127666.html1.构造函数(constructor function):用来实现自动初始化的特殊函数称为构造函数,constructor是一个对象创建时会自动执行的成员函数。1) 构造函数的规定:首先,它与所属的类有着同样的名称其次,构造函数没有返回类转载 2012-08-01 15:23:58 · 3323 阅读 · 0 评论 -
C++中的四种强制类型转换
转:http://www.cppblog.com/lapcca/archive/2010/11/30/135081.html使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。 1 static_cast用法:static_cast ( expression ) 该运算符把exp转载 2012-08-05 15:35:27 · 399 阅读 · 0 评论 -
C++操作符operator的另一种用法
今天在程序员面试宝典上看到这样一道题目: A C++ developer wants to handle a static_cast() operation for the class String shown below. Which of the following options are valid declarations that will accomplish this tas原创 2012-08-05 23:02:49 · 4284 阅读 · 1 评论 -
qsort用法大全
转载:http://hi.baidu.com/clnju/blog/item/260dd2f96b497b51252df20a.html以下是其具体分类及用法(若无具体说明是以降序排列):1、对一维数组排序:(Element_type是一位数组中存放的数据类型,可以是char, int, float, double, etc )int Comp(const void转载 2012-07-27 21:36:13 · 702 阅读 · 0 评论 -
浮点数在C/C++中存储方式
今天和同学探讨了一道C++的面试题,题目如下:#include #include #include #include using namespace std;int main(){ float a=1.0f; cout<<(int)a<<endl; cout<<&a<<endl; cout<<(int&)a<<endl; cout<<boolalpha<<((int原创 2012-08-02 23:17:38 · 651 阅读 · 0 评论 -
STL之queue和stack容器
转载:http://hi.baidu.com/hj11yc/item/f401323edee805f7de222183模版类stack,它是一个后进现出的容器适配器--即自己不直接维护被控序列的模版类,而是它存储的容器对象来为它实现所有的功能;typedef stack>> mycont;默认的参数中容器是用deque实现的;被包含的容器要满足提供value_type,转载 2012-08-11 17:09:26 · 2264 阅读 · 0 评论 -
STL之queque队列
queue队列容器一、原理 queue 队列也是一个线性存储表,元素数据的插入在表的一端进行,在另一端删除,从而构成了一个先进先出FIFO(First In First Out)表。插入一端称为队尾,删除一端称为队首。 默认使用双端队列deque来实现,queue也可看成一个容器适配器,将 deque 容器转换为 queue 容器。当然,也可以利用其他合适的序转载 2012-07-24 23:55:13 · 16949 阅读 · 1 评论