第10章 对象和类 1. 基本类型完成了三项工作: 决定数据对象需要的内存数量: 决定如何解释内存中的位: 决定可使用数据对象执行的操作或方法. 2. 不必在类声明中使用关键字private,因为这是类对象的默认访问控制机制. 3. 其定义位于类声明中的函数都将自动成为内联函数. 4. 如果愿意,也可以在类声明之外定义成员函数,并使其称为内联函数.为此,只需要在类实现部分定义函数时使用inline限定符即可. 5. 内联函数的特殊规则要求在每个使用它们的文件中都对其进行定义.确保内联定义对多文件…
面向对象编程强调的是程序如何表示数据.使用 OOP 方法解决编程问题的第一步是根据它与程序之间的接口来描述数据,从而指定如何使用数据.然后,设计一个类来实现该接口.一般来说,私有数据成员存储信息,公有成员函数(又称为方法)提供访问数据的唯一途径.类将数据和方法组合成一个单元,其私有性实现数据隐藏.通常,将类声明分成两部分组成,这两部分通常保存在不同的文件中.类声明(包括由函数原型表示的方法)应放到头文件中.定义成员函数的源代码放在方法文件中.这样便将接口描述与实现细节分开了.从理论上说,只需知道…
10.2.1 类型是什么基本类型完成了下面的三项工作:* 决定数据对象需要的内存数量:* 决定如何解释内存中的位(long和float在内存中占用的位数相同,但是将它们转换为数值的方法不同):* 决定可以使用数据对象执行的操作或方法.在于内置类型来说,有关操作的信息被内置到编译器中.但在C++中定义用户自定义的类型时,必须自己提供这些信息.付出这些老动换来了根据实际需要定制新数据类型的强大功能和灵活性.10.2.2 C++中的类一般来说,类规范由两部分组成:* 类声明:以数据成员的方式描述数据部…
一.复习题 6.为什么不对基本数据类型的函数参数使用const? 8.编写一个函数,将字符串中所有c1替换成c2,并返回替换次数. #include<iostream> using namespace std; int replace(char *str, char c1, char c2) { ; while (*str) { if (*str == c1) { *str = c2; n++; } str++; } return n; } void main() { char str[] =…
1. bank.h #include <string> using namespace std; class BankAccount { private: std::string m_name;//若是不用命名空间的话,就需要加std:: string m_id; double m_money; public: BankAccount(); BankAccount(const string & name,const string & id,double money=0.0);…
程序清单10.1+10.2+10.3 头文件stock.h #ifndef STOCK00_H_ //先测试x是否被宏定义过 #define STOCK00_H_ //如果没有宏定义,就宏定义x并编译下面的语句 #include <string> class Stock //类声明 { private: std::string company; long shares; double share_val; double total_val; void set_tot() { total_val…
这章感觉好难啊,放个别人的总结. // 多维数组和指针 #include <stdio.h> int main(void) { int zippo[4][2] = {{2, 4}, {6, 8}, {1, 3}, {5, 7}}; /* zippo[0]是一个整数大小对象的地址,而zippo是两个整数大小对象的地址. 因为(一个)整数和两个整数组成的数组开始于同一个地址,因此zippo和zippo[0]具有相同的数值. 验证: 输出也显示出二维数组zippo的地址和一维数组zippo[0]的地…
练习10.1:头文件algorithm中定义了一个名为count的函数,它类似find,接受一对迭代器和一个值作为参数.count返回给定值在序列中出现的次数.编写程序,读取int序列存入vector中,打印有多少个元素的值等于给定值. #include <iostream> #include <algorithm> #include <vector> int main() { std::vector<, , , , , , , , , }; std::cout…
1. /*rain.c 针对若干年的降水量数据,计算年降水总量.年降水平均量,以及月降水平均量*/ #include <stdio.h> #define MONTHS 12 #define YEARS 5 int main (void) { //把数组初始化为2000到2004年的降水量数据 const float rain[YEARS][MONTHS] = //const声明和初始化数组可保护数据 { {4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4,…
习题10.21 解释map和set容器的差别,以及他们各自适用的情况. 解答: map容器和set容器的差别在于: map容器是键-值对的集合,而set容器只是键的集合: map类型适用于需要了解键与值的对应的情况,例如,字典(需要了解单词(键)与其解释(值)的对应情况),而set类型使用于只需判断某值是否存在的情况,例如,判断某人的名字是否在黑名单中. 习题20.22 解释set和list容器的差别,以及他们各自适用的情况. 解答: set容器和list容器的主要差别在于: set容器中的元素…