随笔分类 -  c++primer

摘要:转换构造函数: 当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。 转换构造函数的作用是将一个其他类型的数据转换成一个类的对象。注意:转换构造函数只能有一个参数。如果有多个参数,就不是转换构造函数: 还需要注意的是:编译器只会自动地执行一步类型转换。所 阅读全文
posted @ 2017-12-30 18:19 geloutingyu 阅读(615) 评论(0) 推荐(0)
摘要:可变数据成员: 有时我们希望能修改某个类的数据成员,即使是在一个 const 成员函数内。可以通过在变量的声明中加入 mutable 关键字来声明一个可变数据成员。mutable 是为突破 const 的限制而设置的。被 mutable 修饰的变量将永远处于可变状态中,即使是在一个 const 成员 阅读全文
posted @ 2017-12-25 22:34 geloutingyu 阅读(304) 评论(0) 推荐(0)
摘要:一、友元介绍 我们知道,类的成员函数可以访问同类的其他成员函数,包括公有、私有和保护成员。而类的外部函数只能访问类的公有成员。友元是一种允许非类成员函数访问类的非公有成员的一种机制。可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元。 友元函数友元类 二、友元函数友元函数在类作用域外定 阅读全文
posted @ 2017-12-25 22:29 geloutingyu 阅读(416) 评论(0) 推荐(0)
摘要:构造函数: 每个类都定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。 构造函数的名字和类名相同。和其他函数不一样的是,构造函数没有返回类型。除此之外类似于 阅读全文
posted @ 2017-12-21 18:02 geloutingyu 阅读(336) 评论(0) 推荐(0)
摘要:假设我们要设计一个包含以下操作的 Sales_data 类: 1.一个 isbn 成员函数,用于返回对象的 book_no 成员变量 2.一个 combine 成员函数,用于将一个 Sales_data 对象加到另一个 Sales_data 对象上 3.一个名为 add 的函数,执行两个 Sales 阅读全文
posted @ 2017-12-20 21:57 geloutingyu 阅读(832) 评论(0) 推荐(0)
摘要:函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就 阅读全文
posted @ 2017-12-19 21:33 geloutingyu 阅读(9530) 评论(0) 推荐(1)
摘要:默认实参: 某些函数有这样一种形参,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参。调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。 需要特别注意的是: 1. 一旦某个形参被赋予了默认值,它后面的所有形参都必须有默认值。 2. 只能省略尾部的 阅读全文
posted @ 2017-12-17 19:25 geloutingyu 阅读(374) 评论(0) 推荐(0)
摘要:如果同一作用域的几个函数名相同但形参列表不同,我们称之为重载函数。这些函数接受的参数类型不同,但是执行的操作非常类似。当调用这些函数时,编译器会根据传递的实参类型推断想要的是哪个函数。函数重载可以在一定程度上减轻程序员起名字,记名字的负担。main 函数不能重载。 不允许两个函数除了返回类型外其他所 阅读全文
posted @ 2017-12-17 18:32 geloutingyu 阅读(250) 评论(0) 推荐(0)
摘要:return 语句终止当前正在执行的函数并将控制权返回到调用该函数的地方。return 语句有两种形式: return; return expression; 不要返回局部对象的引用或指针: 函数完成后,它所占用的存储空间也随之被释放掉。因此函数终止意味着局部变量的引用和指针将指向不再有效的内存区域 阅读全文
posted @ 2017-12-17 13:31 geloutingyu 阅读(3326) 评论(0) 推荐(0)
摘要:const 形参和实参 当形参是 const 变量时,实参是 const 或者不是 const 变量都可以。 实参初始化形参时会忽略掉顶层 const: 指针或引用形参与 const 应该尽量使用常量引用避免将普通引用形参绑定到const 对象上的错误。 main 函数传参: main 函数有两个形 阅读全文
posted @ 2017-12-15 17:02 geloutingyu 阅读(428) 评论(0) 推荐(0)
摘要:每次调用函数时都会重新创建它的形参,并用传入的实参对形参进行初始化。形参初始化机理与一般变量的初始化一样。 c++中传递参数方式有值传递和引用传递。由形参的类型决定,如果形参时引用类型,则其是引用传递。形参会绑定到对应实参上。即引用形参是它对应实参的别名。否则是值传递,将实参的值拷贝后赋给形参。此时 阅读全文
posted @ 2017-12-14 12:22 geloutingyu 阅读(1076) 评论(0) 推荐(0)
摘要:1、自动对象默认情况下,局部变量的生命期局限于所在函数的每次执行期间。只有当定义它的函数被调用时才存在的对象称为自动对象。自动对象在每次调用函数时创建和撤销。该类型局部变量存储在栈上,在动态存储区。局部变量所对应的自动对象在函数控制经过变量定义语句时创建。如果在定义时提供了初始化,那么每次创建对象时 阅读全文
posted @ 2017-12-13 21:07 geloutingyu 阅读(1340) 评论(0) 推荐(0)
摘要:vector: 如同一般复合类型一样,vector 迭代器也可以声明成: const vector<int>::iterator it1 = v.begin(); vector<int>::iterator const it2 = v.begin(); 但在一般复合类型中 it1 通常是底层 con 阅读全文
posted @ 2017-12-09 13:18 geloutingyu 阅读(4302) 评论(0) 推荐(0)
摘要:异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持。在c++中异常处理包括: 1. throw 表达式,异常检测部分使用 throw 表达式来表示它遇到了无法处理的问题。我们说 throw 引发 (raise) 了异常。 2. try 语句块 (try block),异常处理部分使用 tr 阅读全文
posted @ 2017-12-07 19:31 geloutingyu 阅读(273) 评论(0) 推荐(0)
摘要:命名的强制类型转换: cast-name<type>(expression); 其中 type 是要转换成的目标类型,expression 是要转换的值。如果 type 是引用类型,则结果是左值。cast-name 指定是哪种转换,有 static_cast, dynamic_cast, const 阅读全文
posted @ 2017-12-02 19:08 geloutingyu 阅读(266) 评论(0) 推荐(0)
摘要:数组时一种类似于标准库类型 vector 的数据结构,但是再性能和灵活的权衡上又与 vector 有所不同。与 vector 相似的地方是,数组也是存放类型相同的对象的容器,这些对象本身没有名字,需要通过其所在位置访问。与 vector 不同的地方是,数组的大小确定后不能变,不能随意向数组中添加元素 阅读全文
posted @ 2017-11-27 19:46 geloutingyu 阅读(243) 评论(0) 推荐(0)
摘要:标准库类型 vector 表示对象的集合,其中所有对象的类型都相同。集合中每个对象都有与之对应的索引,索引用于访问对象。因为 vector "容纳着" 其他对象,所以也被称作容器。 vector 是模板类而非类型,由 vector 生成的类型必须包含 vector 中元素的类型,如:vector<i 阅读全文
posted @ 2017-11-26 19:40 geloutingyu 阅读(290) 评论(0) 推荐(0)
摘要:初始化string对象的方式: 通过 “=” 初始化一个变量,实际上执行的是拷贝初始化。不使用 "=" 则执行的是直接初始化。 string对象上的操作: 处理 string 对象中的字符 cctype头文件中的函数 使用基于范围的 for 语句访问 string 对象中的字符 阅读全文
posted @ 2017-11-26 17:51 geloutingyu 阅读(185) 评论(0) 推荐(0)
摘要:auto: auto能让编译器通过初始值来推算变量的类型。显然auto定义的变量必须有初始值: 使用auto也能在一条语句中声明多个变量。因为一条语句只能有一个基本类型,所以该语句中所有变量的初始值的变量类型必须一致: 复合类型,常量和auto: 编译器推断出来的auto类型有时候和初始值的类型并不 阅读全文
posted @ 2017-11-26 12:42 geloutingyu 阅读(253) 评论(0) 推荐(0)
摘要:const能对变量加以限定,使其值不可修改。如: const int inf = 0x3f3f3f3f; 任何试图修改变量inf的值的操作都将引起编译错误。 因为 const 对象一旦创建后就不能修改,所以const对象必须初始化。 const的引用: 可以把引用绑定到const对象上,就像绑定到其 阅读全文
posted @ 2017-11-25 21:46 geloutingyu 阅读(514) 评论(0) 推荐(0)