genli

导航

文章分类 -  C\C++

c/c++/vc6.0/vs2008
C++中对象的内存空间是在什么时候被分配的
摘要:C++中当创建一个对象时会自动调用它的构造函数,但是如果程序中有用到goto语句跳过或者对象是在swith中声明,在编译的时候就会报错,那么,在C++程序中开始声明的对象和程序中间声明的对象都是什么时候分配的空间(是在系统载入程序的时候就将程序中所有要用到的变量和对象一起分配么,还是走到定义处再分配),如果程序运行的时候跳过的定义处,在下面还能使用么? C++中结构体有:enum(枚举),struct(结构),union(联合),class(类)。当你定义一个结构体类型时,是不存在内存分配的。譬如:struct student{ char *name; int age;};这个时候仅仅是通知. 阅读全文

posted @ 2011-11-24 01:05 genli 阅读(5912) 评论(0) 推荐(0)

C++虚函数表解析(转)
摘要:C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没 阅读全文

posted @ 2011-11-23 22:34 genli 阅读(144) 评论(0) 推荐(0)

C++ 继承与派生
摘要:继承:保持已有类的特性而构造新类的过程。派生:在已有类的基础上新增自己的特性而产生新类的过程称为派生。被继承的已有类称为基类(或父类),派生出的新类称为派生类。继承的目的:实现代码重用。派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。不同继承方式的影响主要体现在:1,派生类成员对基类成员的访问控制。2,派生类对象对基类成员的访问控制。三种继承方式:1,公有继承。2,私有继承。3,保护继承。公有继承:基类的public和protect成员的访问属性在派生类中保持不变,但基类的private不可访问派生类中的成员函数可以直接访问基类中的public和pro 阅读全文

posted @ 2011-11-23 01:02 genli 阅读(328) 评论(0) 推荐(0)

const用法浅析(1)
摘要:一、C中的constconst是C语言中保留的一个关键字,它用来限定一个变量是可读的,即不可变的。1,const修饰一般变量。注意:在C语言中,用const修饰的变量必须在声明时进行初始化(用来修饰函数的形参除外);如:const int n; //这种声明是错误的const int n = 5; //正确void fun(const int n); //正确const char a; //错误char *const p; //正确(注意这种为什么是正确的),因为这里const是修饰p指向的变量,而不是指针变量p本身注意:一旦一个变量被const修饰后,在程序中除初始化外对这个变量进行的赋值都 阅读全文

posted @ 2011-11-22 23:43 genli 阅读(290) 评论(0) 推荐(0)

#ifndef一个用法--防止头文件被重复编译
摘要:很简单,一个叫head.h的头文件,被你工程中两个源文件同时包含如:A.cpp和B.cpp。不用这个条件编译,编译时会将head.h编译两次,导致编译效率低下。 一旦使用了这个,如: #ifndef HEADER_H #define HEADER_H //code #endif // HEADER_H 编译A.cpp的时候,编译器在预处理时知道了有HEADER_H宏,那么在编译b.cpp的时候,预处理#ifndef HEADER_H时发现条件为假,自然不去编译它了,节约了时间 阅读全文

posted @ 2011-11-19 10:40 genli 阅读(1494) 评论(0) 推荐(0)

C/C++中指针和引用之相关问题
摘要:一、基本知识一、什么是引用?引用就是对象的别名。具有以下几个特点:1.引用必须在定义时就初始化;2.引用是唯一的; (指的是原对象必须只能有一个,但可以定义同一个对象的多个引用,就像一个人可以有多个别名,其时那还是一个人是一个道理的)3.引用不会另外多分配存储空间,也不会产生数值的复制;4.引用一旦定义,就不能更改。Int x = 10;Int &rx = x; //定义一个指向x的引用Int *px;Px = &rx; //这样指针Px指向的也是x,(x与px其实还是一个变量,只是这块内存有两个名字一样的)二、 什么是指针?指针: 其实指针这个概念在谭浩强的<C程序设计 阅读全文

posted @ 2011-11-18 22:57 genli 阅读(1117) 评论(0) 推荐(0)

论指针!一、前言(转csdn)
摘要:此文是笔者2005年所作《再再论指针》的修订版,与前文相比,本文主要的不同点有如下几点:一、引用C/C++标准的条款去阐述原理。C与C++标准共有四个已发行的正式版本,分别是C89/C90、C99、C++98和C++2003,为了避免重复的条款引用,在文字或语义相同的情况下,笔者只引用C99的条款,遇到不同的情况时再分别引用。二、加入了C++的内容。三、增加或者合并了一些章节,同时修正了一些行文错误。 指针是C/C++的灵魂!它是C/C++众多引人入胜的特性中的一朵奇葩。与底层操作的亲密接触是指针与生俱来的优点,利用指针可以写出许多短小精悍、效率极高的代码。它是C/C++一把无可替代的利器,凭 阅读全文

posted @ 2011-11-07 21:56 genli 阅读(201) 评论(0) 推荐(0)

C语言学习--for循环
摘要:最近在重新学习C语言,发现一些概念其实一直都没有完全搞的明白,在学习过程中将记录其中一些搞明白的知识。这时先介绍一下for循环。for循环作为最简单最重要的控制语句,一定要搞明白。下面就说一下for循环的执行顺序,对于单个的for循环,例:for(1; 2; 3) A; B;执行顺序:先执行1,再执行2,接着是A,再3,再到2,进行判断,如果符合条件(如果不符合则跳出循环执行B),继续循环A->3->2,再判断如果符合继续A->3->2循环,如果不符合则跳出循环执行B。对于多个for循环,这时举两个for循环嵌套的例子,更多的以此类推。例:for(1; 2; 3) fo 阅读全文

posted @ 2011-11-03 21:08 genli 阅读(1134) 评论(0) 推荐(0)

利用结构体返回多个函数值
摘要:#include <iostream.h>#include <malloc.h>#include <string.h>typedef struct student { char name[10]; int age;}Student;//char tt[5] = {'1','2','3','4','5'};Student* fun1(){ Student* ps = new Student; strcpy(ps->name, "zhong"); //str 阅读全文

posted @ 2011-07-30 12:37 genli 阅读(351) 评论(0) 推荐(0)

对字符数组的初始化问题(C++ 运行环境为VC 6.0)
摘要:我定义一个字符数组: char a[12]; a="null"; 错误. *a="null" 错误; 又如果定义 char *a; a="null"; 正确 . *a="null" 错误;希望高手对以上四个问题指点一二,谢谢最佳答案 这些是基本的概念,你一定要弄懂:char a[12]; //定义了一个字符数组,数组名称为a,这个时候,a是一个指针,并且是常量类型,在整个数组生存期内其值都是不可改动的。a = "null"; //这个时候,a是一个常量指针,指向数组的首地址,他的值在数组的生存期 阅读全文

posted @ 2011-07-30 12:36 genli 阅读(4228) 评论(0) 推荐(0)