- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8 避免重复定义 编译器只需要在编译过程中对文件读入一次,当它看到#include语句时,就会读入相应文件。而如果编译器需要对同一个文件进行多次读入,那么它就会认为程序中重复定义了一些内容,即在一个程序中多次包含同一个头文件,此时会出现编译错误。 如果一个文件需要被包含多次,那么就必须告诉编译器:如果你还没有读入该文件,那么请读入它;而如果已经读过了,就不用再读一次了。此时需要使用条件编译命令。 #ifndef #define #endif #ifndef、 #define 及#endif #ifndef CIRCLE_H //如果没定义CIRCLE_H #define CIRCLE_H //读入以下所有内容并定义为CIRCLE_H class Circle {}; //Circle declaration #endif //必须与#ifndef一起使用 注意: #ifndef和 #define中的标记如CIRCLE_H (实际上是一个宏)必须完全相同,该标记通常只使用大写字母和下划线,并且应该与文件名相同。 7-1(this)将作业6-1,6-2类定义中的成员函数的参数名改为与数据成员同名,利用this指针访问数据成员。 7-2(对象成员)定义圆类:2个数据成员(1个double型半径r,1个点类为圆心c);增加成员函数判断两个圆是相交、相切或相离:直接输出。两个构造函数,两种形式创建圆对象: 3个参数:点的坐标和半径(int x,int y,double r) 2个参数:1个点对象和半径(point,double r) 7-3(对象成员)在时间类time增加date类的对象成员date ,实现日期时间的设置和显示。 7-4修改作业5-4的复数类Complex: 增加一个int型的静态数据成员numberOfObjects ,表示创建的对象个数,初始值为0; 在构造函数中使对象个数增加并输出; 增加析构函数,使numberOfObjects的值减1并输出; 编写一个测试主函数,分别创建两个对象c1、c2,其实部和虚部分别为(1,3)、(2,-2.5), 输出c1与c2相加或相减的结果并输出。 作业7 7-5续.为Complex复数类建立一个友元函数mod,该函数实现求复数模的功能。编写一个测试主函数,分别创建两个对象c1、c2,其实部和虚部分别为(1,3)、(2,-2.5), 输出它们的模。 7-6. 按课上示例定义数据组模板类Array,2个数据成员,5个成员函数:构造、析构、复制构造、GetAt和SetAt函数。编写测试主函数,创建整型和double型数组对象,分别为这两个数组的元素赋值并输出。 作业7 重写:整型数组类CArray,初始化为0,带下标检测 class CArray { public: CArray(int size); //创建包含size个数组元素的整型数组 CArray(CArray); //复制构造函数声明 ~CArray(); //析构函数,删除动态申请的数组空间 int getAt(int nIndex); //得到下标为nIndex的数组元素的值 void setAt(int nIndex, int newElement); //将下标为nIndex的数组元素的值设置为newElement. private: int* data; //整型数组首地址 int size; //数组中的元素个数 }; CArray类的声明部分array.h array.cpp #includearray.h #includeiostream.h CArray::CArray(int s) { size=s; data=new int[size]; memset(data,0,size*sizeof(int)); //初始化内存单元为0 } CArray::CArray(CArray a) { size = a.size; //设置数组元素个数 data = new int[size]; //申请内存空间 for (int i=0;isize;i++) //数组元素赋值 data[i]=a.data[i]; } CArray类的实现部分 Cont. CArray::~CArray() { delete []data; } int CArray::getAt(int nIndex) { if(nIndex0||
文档评论(0)