博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C++项目实战】构建类
阅读量:2119 次
发布时间:2019-04-30

本文共 1285 字,大约阅读时间需要 4 分钟。

1 知识点

  • 课程来自B站侯捷老师视频
  • 好习惯是使用使用防卫式声明,避免重复定义类
  • 构造函数初始化列表
  • 传参和返回类型尽量使用reference(引用)
  • 类成员函数不改变输入参数则尽量使用const
  • 二元操作符重载,默认由this传入第一个参数
  • 由类构造函数生成临时对象
  • 不能返回局部对象的引用
  • cout的重载用到ostream&作为返回类型
  • 友元函数可以类外进行重载,可以访问类中的private成员
  • 内联函数的类外定义

2 代码

#include 
using namespace std;#ifndef __complex__ // 防卫式声明#define __complex__class complex{
public: complex(double r = 0, double i = 0) :re(r), im(i){
} // 构造函数初始化列表 complex& operator += (const complex&); double real() const {
return re;} // 类成员函数不改变输入参数则尽量使用const double imag() const {
return im;} //二元运算符用成员重载时, 只需要一个参数,另一个参数由this指针传入 complex operator + (const complex& y){
return complex(this->real()+y.re, this->imag()+y.im); } private: double re, im; friend complex& __doapl (complex*, const complex&); // 友元函数};inline complex& complex::operator += (const complex& r){
//内联函数 return __doapl (this, r);}inline complex& __doapl (complex*ths, const complex& r){
// 友元函数类外定义 ths->re += r.re; ths->im += r.im; return *ths;}ostream& operator << (ostream& os, const complex& x){
return os << '(' << x.real() << ',' << x.imag() << ')' ; }#endifint main(){
complex c1(2,3); complex c2(1,1); complex c3; c1 += c2; c3 = c1 + c2; cout << c1.real() << endl; cout << c1.imag() << endl; cout << c3 << endl; return 0;}

3 程序输出

34(4,5)

转载地址:http://umwrf.baihongyu.com/

你可能感兴趣的文章
【Java】【28】提高List的removeAll方法的效率
查看>>
【JS】【31】读取json文件
查看>>
OpenSSL源代码学习[转]
查看>>
Spring下载地址
查看>>
google app api相关(商用)
查看>>
linux放音乐cd
查看>>
GridView+存储过程实现'真分页'
查看>>
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>