1.C++ 基础学习复数(不带指针的类)

思路

1.防卫式声明
2.先写出类名
3.考虑需要哪些数据,数据放在私有方法中
4.数据是什么类型
5.考虑构造函数,初值列,没有返回类型,要不要默认值,
6.

头文件

1.声明 .h
2.主程序 .cpp
#include <系统自带>
#include"自己写的内容"
3.标准库 standard library

头文件的写法

在这里插入图片描述
#complex.h

#include <iostream>
#ifndef __COMPLEX__
#define __COMPLEX__
using namespace std;
/*
1.需要有前置声明
2.需要有类声明
3.需要有类定义
*/

/*
template<typename T> //模板,不用把类型写死,到时候再指定
class complex
{
public:
	complex(T r = 0, i = 0)
		:re(r), im(i)
	{}
	complex& operator += (const complex&);
	T real() const { return re; }
	T imag() const { return im; }
private:
	T re, im;
};
*/


class complex
{
	//access  level 访问级别
public:   //公开方法

	/*
	构造函数
	是类对象用来初始化数据成员的方法
	1.函数名称和类的名称相同
	2.可以拥有参数,参数可以拥有默认值
	3.没有返回类型
	4.构造函数可以有多个,但是不能冲突
	*/
	//构造函数一
	complex(double r=0, double i=0)
		:re(r), im(i)    //initialization 初始化 初始值
	{};    //这里写方法


	complex& operator += (const complex&);
	double real() const { return re; };  //用方法展示实部和虚部
	double imag() const { return im; };
	//常量成员函数const  

	double func(const complex& parm)
	{
		return parm.re + parm.im;
	};   //这个函数可以处理其他复数 ,直接拿到他们re,im 因为相同class的object互为友元

private:  //私有方法 我们不希望外界去改数据,看到我们的数据,应该把数据封装起来
	double re, im;
	friend complex& __doapl(complex*, const complex&);
	//友元中的函数可以自由取得私有方法中的数据和函数
	//相同class的各个objects互为友元
};

inline complex&   //传送者无需知道接收者是以reference形式接收
__doapl(complex* ths, const complex& r)
{
	ths->re += r.re;
	ths->im += r.im;
	return *ths;
}
//内联函数
/*
成员函数运算符重载
重载符会看左面这个内容对运算符时是否有重载
左边这个数就是this里头的内容

*/
inline complex&
complex::operator += (const complex& r)
{
	return __doapl(this, r);
}


/*
参数传递 pass by value vs. pass by reference 
参数和返回值传递尽量都传引用 &
*/

inline double imag(const complex& r)
{
	return r.imag();
}
inline double real(const complex& r)
{
	return r.real();
}

inline complex 
operator + (const complex& x, const complex& y)
{
	return complex (real(x) +real(y), 
		imag(x) + imag(y));   //这里内部创建内容来储存这个值,可以用创建的类暂时接收,typename()临时对象
}
inline complex
operator + (const complex& x, const double y)
{
	return complex(x.real() + y, x.imag());
}
inline complex 
operator + (const double x, const complex y)
{
	return complex(x + y.real(), y.imag());  
}

/*
输出流重载
只能是全局重载
右边是复数,左边cout 是属于ostream类
*/
ostream& operator << (ostream& os,const complex& x)
{
	return os << "(" << real(x) << "," << imag(x) <<"i" << ")";
}


#endif

compex.cpp

#include "complex.h"
#include <iostream>
using namespace std;

int main()
{
	complex c1(5, 6);
	complex c2(2, 4);
	cout << c1.real() << endl;
	cout << c1.imag() << endl;
	complex c3;
	c3 = c1 + c2;
	cout << c1.real() << endl;
	cout << c2.real() << endl;
	cout << c3 << endl;
	

	system("pause");
};

const常量成员函数

不会改变数据内容的马上加上const

操作符重载

写类需要注意的地方

1.数据放在私有函数里
2.传递参数尽量用引用
3.要不要加const
4.尽量使用构造函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值