C++编程思想学习
文章平均质量分 78
bluesky_03
ios/android,多媒体、网络,算法与设计模式
展开
-
隐藏实现
为了让一个类或者函数能够访问某个类里面的私有成员,可以把这个类或函数作为某个类的友元。比如,这里面把全局函数main作为某个类的友元函数:#include using namespace std;struct Test{private: int m_a; friend int main();};int main(){ Test test; test.m_a = 90; //原创 2008-08-07 23:48:00 · 481 阅读 · 0 评论 -
初始化与清除
在对象定义的地方,编译器会插入对象的构造函数;在对象销毁的地方,编译器会插入对象的析构函数。传递给这两个函数的的第一个参数就是当前对象的this指针(隐藏起来了)。所以定义一个对象时,会先分配一块内存块,然后把这个内存块的基址传给构造函数,构造函数负责对这个内存块进行初始化。而在销毁一个对象之前,先把这个对象的基址传给析构函数,析构函数对这个内存块进行清理收尾的工作,然后才销毁这个对象(如出栈,逻原创 2008-09-06 22:48:00 · 768 阅读 · 0 评论 -
函数重载与缺省参数
在交淡的时候,有些人喜欢重载一些旧的词语--给它们赋予新的意思,甚至创造出一些新词语,这体现了一定的创造力。不要一味埋怨别人说的唐突,而应该努力根据事情的前后、话的前文来理解这些新的词语,并接受它。函数名重载能给我们带来一定的方便。使用函数的缺省参数,有时也会给我们带来方便。但这样做是不是对用户程序员隐瞒了一些真相?因为他/她可能会觉得很奇怪,“我明明没有传值进去,怎么那个值就起作原创 2008-09-09 11:41:00 · 940 阅读 · 0 评论 -
输入输出流介绍
cin 标准输入流对象,可配合提取符>>使用。int a;cin >> a; 意思是从键盘缓冲区中提取信息(如果没有信息就要从键盘输入),并按整数的格式存入到a中。cout 标准输出流对象,可配合插入符int a = 10;cout 幕中显示出来)。一些操纵算子:endl 插入一个新行并把输出流缓冲里的内容清空(这是一个函数)。flush 把输出流缓冲里的内容清空。hex、oct、原创 2008-09-12 21:32:00 · 820 阅读 · 0 评论 -
常量
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 阅读 · 0 评论 -
内联函数
在类里面定义的函数会自动成为内联函数,所以在类里面定义的函数是没有必要加inline的。inline应该加在函数定义的地方,而不是函数声明的地方(加在这个地方不起作用)。inline函数的定义应该放在头文件里面(可以在类里面也可以在类外面,在类里面是不必加inline的,在类外面则要加inline)。如果编译器觉得一个函数可以成为内联的话,会把这个函数的函数体放到符号表中(当然这个函数原创 2008-09-16 17:18:00 · 632 阅读 · 0 评论 -
命名控制
对于对象(或变量)使用static修饰,表明了两点信息:一是该变量在静态存储存创建,main结束时它的生命才结束。二是该变量最多只被初始化一次(可能一次也没有)。{ static const char * pStr; // const意味pStr指向的内容不能改变。static意味着在静态数据区存放这个变量,而且在这个地方,编译器会加上把pStr初始化的语句即把pStr置为0,而且这个初始原创 2008-09-17 10:02:00 · 459 阅读 · 0 评论 -
引用和拷贝构造函数
使用引用时注意:创建引用时必须对它初始化,即让它关联到一个存储单元,不存在NULL引用。一个引用指向一个对象后,就不能再改变为另一个对象的引用,它就像值不能改变的常量指针一样。引用是跟地址捆绑在一起的,所以引用必须关联到一个存储单元。传递引用,实际上是把地址传递了。关于值方式的传递和值的返回(不是引用的传递和引用的返回):对于内置的数据类型,函数调用时,从右往左把参数列表中的参数逐一入栈(原创 2008-09-18 00:12:00 · 971 阅读 · 0 评论 -
运算符重载
内置的数据类型的运算符是不能重载的,重载的运算符只能属于自定义的数据类型。运算符就是一个函数,函数名是operator加上运算符号,如operator+等。class integer{ int i;public: integer( int n = 0 ) : i(n) { cout ~integer( ) { cout integer( const integer & other )原创 2008-10-08 17:38:00 · 879 阅读 · 0 评论