
C++ primer
文章平均质量分 68
geeeeeeee
这个作者很懒,什么都没留下…
展开
-
函数的参数传递
函数的参数传递所有的函数都使用在程序运行栈run-time stack 中分配的存储区,该存储区一直保持与该函数相关联,直到函数结束为止那时存储区将自动释放以便重新使用,该函数的整个存储区被称为活动记录activation record系统在函数的活动记录中为函数的每个参数都提供了存储区。参数的存储长度由它的类型来决定。参数传递是指用函数调用的实参值来初始化函数参数存储区的过程。C++中参数传原创 2009-01-16 16:34:00 · 664 阅读 · 0 评论 -
C++ primer 摘要《多继承、虚拟继承》20090203
===18.2 多继承===基类构造函数被调用的顺序以类派生表中声明的顺序为准private继承的话,原来父类的public ,protected成员继承到子类中,并成为private类型成员; protected继承的话,原来父类的public ,protected成员继承到子类中,并成为protected类型成员; public继承的话,原来父类的public ,protected成员继承到子原创 2009-02-03 18:10:00 · 907 阅读 · 0 评论 -
C++ primer 摘要《类继承、基类派生类、虚拟函数》20090202
===17.1 定义一个类层次结构===在派生表中指定的类必须首先被定义好,方可被指定为基类// 错误: Query 必须已经被定义class Query;class NameQuery : public Query { ... };===17.3 基类成员访问===1、类域、可视性class Diffident {public: void turn_aside(); // ...};原创 2009-02-02 18:28:00 · 1290 阅读 · 0 评论 -
C++ primer 摘要《局部类、嵌套类、类域》20090127
===13.6.2 使用指向类成员的指针===int (Screen::*pmfi)() = &Screen::height;Screen& (Screen::*pmfS)( const Screen& ) = &Screen::copy;Screen myScreen, *bufScreen;// 直接调用成员函数if ( myScreen.height() == bufScreen->heig原创 2009-01-27 16:45:00 · 1064 阅读 · 0 评论 -
C++ primer 摘要《类成员》20090126
===13.3.5 const 和volatile 成员函数===const成员函数1.只有被声明为const 的成员函数才能被一个const 类对象调用const类对象不能调用非const成员函数(除构造函数析构函数外)2.对于在类体之外定义的const 成员函数,我们必须在它的定义和声明中同时指定关键字constclass Screen {public: bool isEqual( ch原创 2009-01-26 21:02:00 · 645 阅读 · 0 评论 -
C++ primer 摘要《异常处理》20090122
===11.1 抛出异常===异常是个对象,throw 表达式后要跟一个对象 throw popOnEmpty(); //popOnEmpty是个类,这里使用了构造函数构造对象虽然异常往往是class 类型的对象,但是throw 表达式也可以抛出任何类型的对象 enum EHstate { noErr, zeroOp, negativeOp, severeError }; in原创 2009-01-22 16:41:00 · 775 阅读 · 0 评论 -
C++ primer 摘要《操作符重载、用户定义转换、重载解析》20090201
===15.1.1 类成员与非成员===1、怎样决定是把一个操作符声明为类成员还是名字空间成员a、如果一个重载操作符是类成员那么只有当跟它一起被使用的左操作数是该类的对象时,它才会被调用,如果该操作符的左操作数必须是其他的类型,那么重载操作符必须是名字空间成员b.C++要求赋值= 下标[] 调用() 和成员访问箭头-> 操作符必须被定义为类成员操作符,任何把这些操作符定义为名字空间成员的定义都会被原创 2009-02-01 21:57:00 · 1130 阅读 · 0 评论 -
C++ primer 摘要《类构造函数、析构函数、初始化》20090130
===14.2 类的构造函数===1.为构造函数指定实参有三种等价形式// 一般等价的形式Account acct1( "Anna Press" );Account acct2 = Account( "Anna Press" );Account acct3 = "Anna Press";acct3 的形式只能被用于指定单个实参的情形,对于两个以上的实参只能使用acct1 和acct2 的形式2原创 2009-01-30 14:56:00 · 1429 阅读 · 0 评论 -
引用初始化、左值右值、函数数组参数
l-value 与 r-value 区别左值是引用某个对象的表达式,就是可以放在赋值左边的东西,如:*(p+1)=7, 没有名字的变量(*(p+1)表达式一定是一个类型的对象)被赋值了,但左值并不一定能被赋值,因为左值可以引用某个常量。 所有的引用都是左值。 右值是表达式的值(不是引用),可以放在赋值右面。 所有的左值都可以是右值,反之不成立 int i, j, *p; i = 7;原创 2009-01-21 11:09:00 · 2155 阅读 · 0 评论 -
C++ primer 摘要《extern、变量函数声明与定义、头文件、动态分配与释放》20090119
===***8.2全局对象与函数***======8.2.1声明和定义===在全局域中定义的对象,如果没有指定显式的初始值,则该存储区被初始化为0extern 声明不会引起内存被分配,它可以在同一文件中或同一程序的不同文件中出现多次.extern const double pi; //声明既指定了关键字extern 又指定了一个显式初始值的全局对象声明,将被视为该对象的定义编译器将会为原创 2009-01-19 17:01:00 · 3673 阅读 · 0 评论 -
C++ primer 摘要《函数重载》20090120
===9.1.1 为什么要重载一个函数名===我们可能希望定义一组函数它们执行同样的一般性动作,但是应用在***不同的参数类型***上(注意是参数)===9.1.2 怎样重载一个函数名===1、如果两个函数的参数表中参数的个数或类型不同,则认为这两个函数是重载的2、当一个参数类型是const 或volatile 时,在识别函数声明是否相同时,并不考虑const 和volatile 修饰符// 声明原创 2009-01-20 16:50:00 · 700 阅读 · 0 评论 -
C++ primer 摘要《函数模板》20090120
===10.1 函数模板定义===模板参数可以是一个模板类型参数,它代表了一种类型也可以是一个模板非类型参数,它代表了一个常量表达式template //当函数模板min()被实例化时size 的值会被一个编译时刻已知的常量值代替Type min( Type (&arr) [size] ); // size 指定数组参数的大小并初始化一个 const int 值template Type原创 2009-01-20 17:15:00 · 1027 阅读 · 0 评论 -
顺序容器list vector
一、结构vector 表示一段连续的内存区域每个元素被顺序存储在这段内存中对vector 的随机访问(比如先访问元素5 然后访问15 然后再访问7 等等)效率很高因为每次访问离vector起始处的位移都是固定的但是在任意位置而不是在vector 末尾插人元素则效率很低因为它需要把待插入元素右边的每个元素都拷贝一遍类似地删除任意一个而不是vector的最后一个元素效率同样很低因为待删除元素右边的原创 2009-01-16 10:45:00 · 755 阅读 · 0 评论 -
C++ primer 摘要《RTTI、异常与继承、继承与重载》20090203
===19.1.1 dynamic_cast 操作符===dynamic_cast 操作符可以用来把一个类类型对象的指针转换成同一类层次结构中的其他类的指针同时,也可以用它把一个类类型对象的左值转换成同一类层次结构中其他类的引用如果针对指针类型的dynamic_cast失败则dynamic_cast 的结果是0 void company::payroll( employee *pe ){原创 2009-02-03 23:04:00 · 832 阅读 · 0 评论