Complex复数类——课堂作业
作者:互联网
代码:
#include<iostream> #include<cmath> using namespace std; class Complex { public: Complex(double ideal,double imagingery);//构造函数 void add(Complex c2);//加法函数 double mod();//取模函数 void show(); Complex(Complex &c2);//复制构造函数 private : double d; double m; }; Complex::Complex(Complex &c2): { d = c2.d; m = c2.m; } Complex::Complex(double ideal=0, double imaginery=0):d(ideal),m(imaginery)//不同的初始化方式 { } void Complex ::add(Complex c2) { d = d + c2.d; m = m + c2.m; } double Complex::mod() { double s; s = sqrt(d*d + m * m); return s; } void Complex::show() { cout << d << "+" << m << "i" << endl; } int main() { Complex c1(3, 5); cout << "c1="; c1.show(); Complex c2 = 4.5; cout << "c2="; c2.show(); Complex c3(c1); cout << "c3="; c3.show(); c1.add(c2); cout << "c1加c2:"; c1.show(); cout << "c1的模:"; cout << c1.mod(); return 0; }
程序结果:
对类基本框架及一些基本函数很不熟悉。 以下进行知识整理。
class A//A为类名 { public://外部接口 A(int i,int j);//构造函数 A(A &a);//复制构造函数 void A1(A a); int A2(int a=0,int b=0);//类的成员函数可以有默认形参值,但必须写在类定义中 void A3();//其他成员函数 private : int d; int m;//成员数据。在类内部,只能定义,不能初始化。 };
//构造函数 A::A(int i, int j):d(0), m(0) { } //复制构造函数 A::A(A &a) : d(a.d), m(a.m) { } //其他成员函数 void A::A1(A a){}
构造函数:
作用:用于在创建对象时为对象分配内存,并且可以将其初始化到特定状态。
性质:1、特殊的成员函数。2、函数名与类名相同,没有返回值。3、构造函数在对象被创建的时候会自动被调用(不带参数,不初始化,只负责分配内存)。4、可以是内联函数,重载函数或带有默认形参值的函数。
自定义的构造函数若带有形参,建立对象时必须给出初始值。
复制构造函数: (构造函数的一种,包含构造函数的性质)
形参是本类的对象的引用。有且只有一个形参。功能:把初始化对象的每个数据成员的值都复制到新建立的对象中。
以下情况下被调用:1、Complex c3(c1);(用类的一个对象去初始化本类的另个对象)2、函数的形参是类的对象,实参传给形参时。3、函数的返回值是类的对象。
函数实现:
返回值类型 类名::函数名(参数){}
对于没有返回值函数名是类名的构造函数的实现:类名::类名(参数){}
对象的引用:
对象.成员名
const
A::A(const A &t){}只允许使用,不允许修改。
本次实验作业也可以这么写:
class Complex { public: Complex(double ideal,double imagingery); void add(const Complex &c2);//不单独写复制构造函数 double mod(); void show(); private : double d; double m; };
标签:课堂作业,函数,double,void,Complex,复数,c2,构造函数 来源: https://www.cnblogs.com/lovecpp/p/10629186.html