课程视频(可能需要一点技巧才能打开):【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