c++作业,带默认参数的成员函数
2013-03-28 09:43
218 查看
题目来源于:/article/1353382.html
【项目2】C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
项目要求:完成下面类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。
然后自己针对项目2写了一下程序,途中遇到了一个问题。以前接触过带默认实参的构造函数,但这是自己第一次接触到带默认实参的成员函数,有点显得措手不及,总是被提示:'output':redefinition of default parameter:parameter 1
see declaration of 'output'.
然后自己上网查了查,其实这个也简单,就是如果你在声明中包含有默认实参的话,在定义的时候不要加默认实参就可以了;并且,如果声明中没有加上的话,在定义的时候加上也是可以的。
参考资料来源:http://blog.csdn.net/yuxmdef1/article/details/6799120
以下是通过了编译的代码。有时候很多东西都以为自己懂,写起来的时候各种毛病就显现了。
【项目2】C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
项目要求:完成下面类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。
class CFraction {private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void set(int nu=0,int de=1); //置值,改变值时用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入 void simplify(); //化简(使分子分母没有公因子) void amplify(int n); //放大n倍,如2/3放大5倍为10/3 void output(int style=0); //输出:以8/6为例,style为0时,原样输出8/6; //style为1时,输出化简后形式4/3; //style为2时,输出1(1/3)形式,表示一又三分之一; //style为3时,用小数形式输出,如1.3333; //不给出参数和非1、2,认为是方式0 };
然后自己针对项目2写了一下程序,途中遇到了一个问题。以前接触过带默认实参的构造函数,但这是自己第一次接触到带默认实参的成员函数,有点显得措手不及,总是被提示:'output':redefinition of default parameter:parameter 1
see declaration of 'output'.
然后自己上网查了查,其实这个也简单,就是如果你在声明中包含有默认实参的话,在定义的时候不要加默认实参就可以了;并且,如果声明中没有加上的话,在定义的时候加上也是可以的。
参考资料来源:http://blog.csdn.net/yuxmdef1/article/details/6799120
以下是通过了编译的代码。有时候很多东西都以为自己懂,写起来的时候各种毛病就显现了。
#include <iostream> using namespace std; class CFraction {private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu=0,int de=1):nume(nu),deno(de){} //构造函数,初始化用 void set(int nu=0,int de=1) { nume = nu; deno = de; } //置值,改变值时用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入 void simplify(); //化简(使分子分母没有公因子) void amplify(int n); //放大n倍,如2/3放大5倍为10/3 void output(int style); //输出:以8/6为例,style为0时,原样输出8/6; //style为1时,输出化简后形式4/3; //style为2时,输出1(1/3)形式,表示一又三分之一; //style为3时,用小数形式输出,如1.3333; //不给出参数和非1、2,认为是方式0 }; //CFraction::CFraction(int nu =0,int de=1) { nume = 0; deno =1; } //void CFraction::set(int nu=0,int de=1) { nume = 0; deno =1; } void CFraction::input() { char cvar; cin>> "按照5/2格式输入" >> nume >> cvar >> deno; } void CFraction::simplify() { int v1 = nume; int v2 = deno; while(v2) { int temp = v2; v2 = v1 % v2; v1 = temp; } nume /= v1; deno /= v1; } void CFraction::amplify(int n) { nume *= n; } void CFraction::output(int style=0) { if(style == 1) { simplify(); cout << nume << '/' << deno; cout << endl; } else if(style == 2) { simplify(); cout << nume/deno << '(' << nume-deno << '/' << deno << ')'; cout << endl; } else if(style == 3) { cout << (double)nume/deno; cout << endl; } else { cout << nume << '/' << deno; cout << endl; } } int main() { CFraction cf1; cf1.output(); cf1.set(8,6); cf1.output(); cf1.output(1); cf1.output(2); cf1.output(3); CFraction cf2(2,3); cf2.output(); cf2.amplify(2); cf2.output(); return 0; }
相关文章推荐
- [C++] 类成员函数后加 const
- c++成员函数的存储
- C++之友元成员函数
- C++静态成员变量和静态成员函数
- c++成员函数做回调函数
- c++中静态成员变量 静态成员函数 全局变量与静态函数的关系 字符串中括号的匹配编程 (笔试经历)
- 从零开始学C++之IO流类库(四):输出流格式化(以操纵子方式格式化 以ios类成员函数方式格式化)
- C++中的成员函数
- C++关于参数为const引用类型的函数调用参数成员函数的一个问题
- C++ 成员函数与成员变量的关系
- C++指针直接调用类成员函数探讨(转载)
- C++取成员函数地址方法
- 函数调用约定(注意c++普通函数成员调用时有this参数)
- C++成员函数指针的应用
- 【自考】C++程序设计(三)特殊函数和成员
- c++中的静态成员函数和静态数据成员
- C++中静态成员函数访问非静态成员变量
- C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
- C++函数系列篇:函数的默认值+带默认参数的函数
- c++第四周【任务1】下面设计一个三角形类,请给出各成员函数的定义