课堂小练习: 设计、定义并实现complex类

#include<iostream>
#include<cmath>
using namespace std;
class complex{
    public:
        complex(double real0=0,double imaginary0=0);
        complex(complex &p);
        void add(complex);
        void qiumo();
        void show();
    private:
        double real;
        double imaginary;
};
complex::complex(double real0,double imaginary0):real(real0),imaginary(imaginary0){
    cout<<"calling constructor of complex"<<endl;
}
complex::complex(complex &p):real(p.real),imaginary(p.imaginary){
    cout<<"calling constructor of complex copy"<<endl;
}
void complex::add(complex y){
    cout<<"calling constructor of add"<<endl;
    real=real+y.real;
    imaginary=imaginary+y.imaginary;
}
void complex::qiumo(){
    cout<<"calling constructor of qiumo"<<endl;
    double x;
    x=sqrt(real*real+imaginary*imaginary);
    cout<<"模长"<<x<<endl;
}
void complex::show(){
    cout<<"calling constructor of show"<<endl;
    cout<<real<<"+"<<imaginary<<"i"<<endl;
}

int main(){
    complex c1(3,5);
    complex c2(4.5);
    complex c3(c1);
    c1.add(c2);
    c1.qiumo();
    c1.show();

}  

结论:

这个程序但是是在课堂上并没有实现出来,一个原因是时间太短问题,另一个则是因为自己在课后可以更深入的思考,没什么课堂上的压力,写中间的add c1与c2相加的程序这里并没有考虑到函数声明与其后面程序的函数参数并不一致,导致程序出错,好在向同学请教,解决了这个问题,为了更加清晰地观察到整个程序的运行,我在每个被调用的类成员里都添加了输出这一部分,以此使程序更加的清晰易懂。以及书中有一个地方,是c2=4.5,但是只要我加了复制构造函数那么c2=4.5就无法运行会显示编译错误,如果没加就不会出现这样的情况。

原文地址:https://www.cnblogs.com/mxueyyqx/p/10629513.html

时间: 2024-08-09 01:17:53

课堂小练习: 设计、定义并实现complex类的相关文章

设计、定义并实现Complex类

实验结论 Complex类 Code: #include<iostream> #include<cmath> #include<cstdlib> using namespace std; class Complex { public: Complex(double newr = 0, double newi = 0); Complex(Complex &c1); void add(Complex c1); void show(); double mod(); p

课堂小测

/*信1805-3 20183769 赵常恒*/ package 课堂小测;import java.util.*;class ScoreInformation { private String stunumber; private String name; private double mathematicsscore; private double englishiscore; private double networkscore; private double databasescore;

MFC的窗口分割的设计与实现以及CSplitterWnd 类分析

1 引言 在Microsoft VC++ 6.0 中,基于MFC 的应用程序一般分为以下几种:多文档界面(MDI). 单文档界面(SDI)以及基于对话框的应用程序.其中单文档又可分为单视图的和多视图的, 一般情况下,单文档仅需要单视图就够了,如Windows 自带的记事本.画图程序等等,但 在一些情况下,单文档需要多视图支持,比如同时观察文档的不同部分,同时从不同的角度 观察同一文档等. 在MFC 的框架下,文档对象(CDocument)有一个保存其所有视图的列表,并提供了 增加视图(AddVi

java: Comparable比较器,定义二叉操作类

//定义二叉操作类 class BinaryTree{ class Node{ private Node left; //左指数 private Node right; //右指数 private Comparable data; public Node(Comparable<?> data) { this.data = data; } //二叉数据比较,大的放在右边,小的放在左边 public void addNode(Node newNode) { //放在左边 if( newNode.d

Coding之路——重新学习C++(4):定义一个正确的类

我们都能定义一个类,可是如何定义一个正确的类,这是一个需要我们深入理解的问题.C++之父曾经说过定义新类型的基本思想就是将实现一个类的时候并非必要的细节(存储该类型的对象采用的布局细节)和对于这个类的正确使用至关重要的性质(访问数据的成员函数)分开设计.这种区分的最好实现方式是提供一个特定的表层接口,所有对于类内部数据结构和内部维护的调用都通过这个表层接口. 1.类该怎么定义 (1)首先我们要明白,建立一个对象,构造函数把成员变量都放在了堆之中(除了static变量之外,static变量放在全局

《C++沉思录》——类设计核查表、代理类、句柄类

<C++沉思录>集中反映C++的关键思想和编程技术,讲述如何编程,讲述为什么要这么编程,讲述程序设计的原则和方法,讲述如何思考C++编程. 一.类设计核查表 1.你的类需要一个构造函数吗? 2.你的数据成员都是私有的合理吗? 3.你的类需要一个无参的构造函数吗? 是否需要生成类对象的数组! 4.你的每一个构造函数都初始化所有的数据成员了吗? 虽然这种说法未必总是正确,但是要积极思考! 5.你的类需要析构函数吗? 6.你的类需要一个虚析构函数吗? 7.你的类需要一个拷贝构造函数吗? 8.你的类需

hadoop编程小技巧(3)---自定义分区类Partitioner

Hadoop代码测试环境:Hadoop2.4 原理:在Hadoop的MapReduce过程中,Mapper读取处理完成数据后,会把数据发送到Partitioner,由Partitioner来决定每条记录应该送往哪个reducer节点,默认使用的是HashPartitioner,其核心代码如下: /** Use {@link Object#hashCode()} to partition. */ public int getPartition(K2 key, V2 value, int numRe

小酌重构系列[11]&mdash;&mdash;提取基类、提取子类、合并子类

概述 继承是面向对象中的一个概念,在小酌重构系列[7]--使用委派代替继承这篇文章中,我"父子关系"描述了继承,这是一种比较片面的说法.后来我又在UML类图的6大关系,描述了继承是一种"is a kind of"关系,它更偏向于概念层次,这种解释更契合继承的本质.本篇要讲的3个重构策略提取基类.提取子类.合并子类都是和继承相关的,如果大家对继承的理解已经足够深刻了,这3个策略用起来应该会得心应手. 提取基类 定义:如果有超过一个类有相似的功能,应该提取出一个基类,并

类继承,定义了一个点类point,然后线条类line继承了point类,正方形类square继承line类

类继承,定义了一个点类point,然后线条类line继承了point类,正方形类Suare继承line类 正方形四个角坐标关系如图 1 /** 2 * 3 java继承实例. 4 5 6 定义了一个点类point,然后线条类line继承了point类,正方形类square继承line类. 7 8 */ 9 10 //点类 11 class PointDemo 12 { 13 private int x; 14 private int y; 15 private static int pCount