- 博客(8)
- 收藏
- 关注
原创 引用和拷贝构造函数
使用引用时注意:创建引用时必须对它初始化,即让它关联到一个存储单元,不存在NULL引用。一个引用指向一个对象后,就不能再改变为另一个对象的引用,它就像值不能改变的常量指针一样。引用是跟地址捆绑在一起的,所以引用必须关联到一个存储单元。传递引用,实际上是把地址传递了。关于值方式的传递和值的返回(不是引用的传递和引用的返回):对于内置的数据类型,函数调用时,从右往左把参数列表中的参数逐一入栈(
2008-09-18 00:12:00 971
原创 命名控制
对于对象(或变量)使用static修饰,表明了两点信息:一是该变量在静态存储存创建,main结束时它的生命才结束。二是该变量最多只被初始化一次(可能一次也没有)。{ static const char * pStr; // const意味pStr指向的内容不能改变。static意味着在静态数据区存放这个变量,而且在这个地方,编译器会加上把pStr初始化的语句即把pStr置为0,而且这个初始
2008-09-17 10:02:00 459
原创 内联函数
在类里面定义的函数会自动成为内联函数,所以在类里面定义的函数是没有必要加inline的。inline应该加在函数定义的地方,而不是函数声明的地方(加在这个地方不起作用)。inline函数的定义应该放在头文件里面(可以在类里面也可以在类外面,在类里面是不必加inline的,在类外面则要加inline)。如果编译器觉得一个函数可以成为内联的话,会把这个函数的函数体放到符号表中(当然这个函数
2008-09-16 17:18:00 632
原创 常量
void testConst( ){ const int i = 10; // ok const int j = i + 100; // ok char buf[ j + 20 ]; // ok const int nSize = (int)cin.get( ); // ok //int arrayInt[ nSize ]; // error 数组的大小必须在编译时就确
2008-09-16 00:56:00 457
原创 输入输出流介绍
cin 标准输入流对象,可配合提取符>>使用。int a;cin >> a; 意思是从键盘缓冲区中提取信息(如果没有信息就要从键盘输入),并按整数的格式存入到a中。cout 标准输出流对象,可配合插入符int a = 10;cout 幕中显示出来)。一些操纵算子:endl 插入一个新行并把输出流缓冲里的内容清空(这是一个函数)。flush 把输出流缓冲里的内容清空。hex、oct、
2008-09-12 21:32:00 820
原创 函数重载与缺省参数
在交淡的时候,有些人喜欢重载一些旧的词语--给它们赋予新的意思,甚至创造出一些新词语,这体现了一定的创造力。不要一味埋怨别人说的唐突,而应该努力根据事情的前后、话的前文来理解这些新的词语,并接受它。函数名重载能给我们带来一定的方便。使用函数的缺省参数,有时也会给我们带来方便。但这样做是不是对用户程序员隐瞒了一些真相?因为他/她可能会觉得很奇怪,“我明明没有传值进去,怎么那个值就起作
2008-09-09 11:41:00 940
原创 栈的应用--算术表达式求值
选择栈作为数据结构,所以所有操作都要围绕栈的特点来进行。因为先入栈而被压在下面的意味着要后处理,所以优先级低的不能压着优先级高的而入栈。对于同级的操作符,因为要按照从左往右的运算规则,所以也不能压着同级的操作符而入栈。简单来说,与栈顶的操作符比较,优先级高的则入栈,否则操作符出栈作相应运算。本算法使用两个栈,一个用来存放操作符,一个用来存放操作数和运算的结果。因为比较优先级是必须做的事
2008-09-08 16:19:00 2433
原创 初始化与清除
在对象定义的地方,编译器会插入对象的构造函数;在对象销毁的地方,编译器会插入对象的析构函数。传递给这两个函数的的第一个参数就是当前对象的this指针(隐藏起来了)。所以定义一个对象时,会先分配一块内存块,然后把这个内存块的基址传给构造函数,构造函数负责对这个内存块进行初始化。而在销毁一个对象之前,先把这个对象的基址传给析构函数,析构函数对这个内存块进行清理收尾的工作,然后才销毁这个对象(如出栈,逻
2008-09-06 22:48:00 769
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人