2011年4月23日

有关fstream中openmode讨论【转】

摘要: 今天很恼火,是因为自己了,和上一次犯了一个同样的错误,分析出了原因但是并没有把错误记录下来,今天在这里想好好的分析一下fstream中openmode的问题,在msdn中介绍了有六种打开的方式,第一种为app我认为是单词(append)意思,感觉的英文的解释就是在在插入之前先把光标定位到文件的末尾。第二种为ate,英文的解释为to seek to the end of a stream when its controlling object is first created。第三种为binary,英文的解释为以二进制的方式去读文件,而不是以字节方式去读文件。第四种就是in从文件中读取数据。第五 阅读全文

posted @ 2011-04-23 20:03 鲁大山 阅读(2389) 评论(0) 推荐(0)

2011年4月17日

特殊数据类型成员变量的初始化【转】

摘要: 有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.常量型成员变量b.引用型成员变量c.静态成员变量d.整型静态常量成员变量e.非整型静态常量成员变量对于常量型成员变量和引用型成员变量的初始化,必须通过构造函数初始化列表的方式进行。在构造函数体内给常量型成员变量和引用型成员变量赋值的方式是行不通的。静态成员变量的初始化也颇有点特别。参考下面的代码以及其中注释:// Initialization of Special Data Member#include<iostream>usingnamespacestd;clas 阅读全文

posted @ 2011-04-17 22:31 鲁大山 阅读(376) 评论(0) 推荐(0)

2011年3月26日

指针

摘要: void f(){ char* p="Plato"; p[4]='4' //错误:给常量赋值,结果无定义}可以用字符串文字量给一个char* 赋值。但试图通过这样的指针去修改字符串文字量将是一个错误。 阅读全文

posted @ 2011-03-26 20:23 鲁大山 阅读(149) 评论(0) 推荐(0)

2011年3月13日

JAVA与C++区别(二):字符串

摘要: 1:C风格字符串被定义为以null字符结尾的字符数组。如:char str[6]="hello"相当于实现:char str[]={'h','e','l','l','o','\0','}由于字符串常量是按照字符数组形式存储的,编译器用存储第一个字符的内存地址来表示它,更准确的说是:const char *.我们可以直接用字符指针表示: char *str="hello"; //第一个字符的地址被存储在指针变量str中。 常用C函数:int strcmp 阅读全文

posted @ 2011-03-13 14:01 鲁大山 阅读(2319) 评论(0) 推荐(0)

【转】java中的final与C++中的const的区别

摘要: (1)final在java中定义常量,可作用于基本类型或者类类型,若是作用于类类型,则此类类型不能作为父类被继承,也就是说它的下面不能有子类,这样的类叫做原子类。 C++中的const定义常量,(2)Java中的final如果是对于基本类型,那和C++ const是一样的 但是如果是对对象而言,不同了(3)final表示这个句柄是不可改变的 final Object obj=(Object)new String("a"); obj=(Object)new String("hello");是非法的 但是依然可以调用obj的方法。如((String)obj) 阅读全文

posted @ 2011-03-13 10:18 鲁大山 阅读(2711) 评论(0) 推荐(2)

2011年3月12日

【转】关于堆栈和堆的概念(VC知识库)

摘要: [问题]C++中创建本地(或者说局域)变量是在堆栈(stack)中分配内存地址,而创建全局变量则是在堆(heap)中分配内存地址。我想知道什么是堆(heap)?为什么全局变量和本地变量在分配内存地址时要分别对待,堆和堆栈那一个更有效率?[回答]在Window中执行的每一个应用程序都有其自己的内存地址。一部分内存空间用于存放程序代码,一部分内存空间用于存放程序执行期间创建的变量。创将变量的方法有两种,一种是在堆中,另外一种则在堆栈里。理解堆的最好的方法是将它看成一个程序随时可以使用的内存块。为了创建堆变量,程序要使用“new”(在C++里)操作符或者“malloc”(在C中)例程,它们返回指向变 阅读全文

posted @ 2011-03-12 15:46 鲁大山 阅读(793) 评论(0) 推荐(0)

2011年3月11日

【转】C/C++中static关键字详解

摘要: 静态成员变量与静态成员函数是不属于对象的,它在程序编译时就已经构造,因此在没有建立任何对象的情况下也可以直接用“类名::函数名(变量名)”就可以正确访问。静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将只在执行线程第一次到达它的定义使初始化。用法2:局部静态对象对于局部静态对象, 阅读全文

posted @ 2011-03-11 19:06 鲁大山 阅读(346) 评论(0) 推荐(0)

JAVA与C++区别(一)

摘要: 首先,引用一句Thinking in java中作者一直在强调的一句话:一切皆对象。本文主要关于C++和JAVA类及一些其他关键概念的区别: 在OO编程中几个关键概念无非是类,封装,继承,多态。一:关于类(1):在C++中定义类:class User{public: Uers(string str,int yy){ name=str,age=yy;} void print(){ ...... }private string name; int age; }; // 类的结尾处应该以“;”结束在C++中有两种初始方式: User u("zhangsan",20); //(A) 阅读全文

posted @ 2011-03-11 16:31 鲁大山 阅读(6214) 评论(4) 推荐(0)

2011年3月10日

【转】理解复杂的C/C++声明

摘要: 介绍曾经碰到过让你迷惑不解、类似于int*(*(*fp1)(int))[10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明:我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。需要强调一下的是,复杂的C/C++声明并不是好的编程风格;我这里仅仅是教你如何去理解这些声明。注意:为了保证能够在同一行上显示代码和相关注释,本文最好在至少1024x768分辨率的显示器上阅读。基础让我们从一个非常简单的例子开始,如下:intn;这个应该被理解为“decla 阅读全文

posted @ 2011-03-10 22:45 鲁大山 阅读(620) 评论(1) 推荐(1)

【转】vtbl(虚函数表)与vptr(虚函数表指针)

摘要: 类的虚函数表是一块连续的内存,每个内存单元中记录一个JMP指令的地址注意的是,编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一行。如果类中有N个虚函数,那么其虚函数表将有N*4字节的大小。虚函数(VirtualFunction)是通过一张虚函数表(VirtualTable)来实现的。简称为V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了, 阅读全文

posted @ 2011-03-10 21:54 鲁大山 阅读(14994) 评论(0) 推荐(0)

导航