C++类的构造:简单的complex搭建

C++类的构造:简单的complex搭建如何构建C++不带指针的类

课程视频(可能需要一点技巧才能打开):【link
测试平台:devc++
注意:用工程打开的时候会报错undefined reference to `complex::operator+=(complex const&),应该是工程的编译过程和单个文件编译过程有区别,建议直接编译main.cpp测试即可

1、课程讲解

有机会要补一下口头笔记,下面的问题在课程前6节都讲到过了
如何定义c++的类
如何写一个构造函数
如何重构运算符
……

2、代码

利用所学的内容写一个complex(复数)类~这个也是本课程的案例

main.cpp,测试模块:

#include<iostream>

#include "complex.h"

using namespace std;
//对于complex的输出重构 
ostream&
operator <<(ostream& os,const complex& x)
{ 
   
	return 	os<<'('<<x.real()<<','<<x.imag()<<')';
}
int main(){ 
   
	complex c1(1,2);
	complex c2(4,5);
	cout<<"原始复数:"<<endl;
	cout<<"c1="<<c1<<endl;
	cout<<"c2="<<c2<<endl;
	c2+=c1;
	cout<<"执行c2+=c1,c2="<<c2<<"\n"; 
	return 0;
}

complex.h,定义类以及其中一些函数名称的头文件:

#ifndef __MYCOMPLEX__
#define __MYCOMPLEX__

//定义类
class complex;
//定义函数 
complex&
__doapl(complex*ths,const complex& r);

//对类具体的定义
class complex{ 
   
	private:
		double re,im;
		//友元函数 
		friend complex& __doapl(complex*,const complex&); 
	public:
		
		//构造函数 
		complex(double r,double i)
			: re(r),im(i)
		{ 
    }
		
		//取私域的值
		double real()const{ 
   return re;}
		double imag()const{ 
   return im;}
		
		//运算符重构 
		complex& operator += (const complex&);

}; 
#include"complex.cpp"

#endif

complex.cpp,将.h中的函数体具体申明,其实也可以直接写在.h中而不需要单独写一个.cpp:

#include "complex.h"

//对于.h文件中类函数内的具体的声明
inline complex&
__doapl(complex* ths,const complex&r)
{ 
   
	ths->re+=r.re;
	ths->im+=r.im;
	return *ths;
}

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

测试结果:
在这里插入图片描述

今天的文章C++类的构造:简单的complex搭建分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/26757.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注