头文件 complex .h
-
内联函数 在头文件中声明和实现的函数。内联函数运行速度快。内联函数使用inline关键字进行修饰。但是即使使用inline修饰之后,函数也不一定会成为真正的内联函数。是否是真正的内联函数是由编译器来决定的。编译器会根据函数的具体实现来决定该函数是否作为内联函数来使用。
-
成员修饰 public、private 作为是否需要被外界所使用。其中修饰可以是随机排列的,不一定要顺序排列
-
构造函数 与class名称相同的函数,无返回值。构造函数可以拥有多个,即重载。但是不能使得重载的构造函数有歧义。
-
初始化列表 c++11, 写法简单、运行效率高。用于对数据进行初始化操作。初始化列表比旧的在构造函数中对成员变量进行初始化的操作要快很多,而且两者的作用是一样的:都是对成员变量进行初始化。初始化列表只在构造函数中可以使用。
列表初始化:c++11 新特性,效率和运行速度快
写法: 类名(类型 参数=值1,类型 参数=值2):成员1(值1),成员2(值2) -
const 基本使用:部分相关
- const位置不同,作用不同
- 在函数(参数后,花括号前)后添加const,表示此函数是一个常量成员函数,是不可以改变成员数据内容。
·写法: 函数名(参数列表) const {函数题} - 基本原则: 在不希望数据被更改的地方都加上const,增加程序的健壮性。
-
参数传递 尽量使用引用传递
- 值传递:
将值本身传入函数 - 引用传递:(c++中使用引用或者指针来表示,引用的底层实现就是指针。指针使用*,引用使用&)
将对象指向的地址传入函数 - 返回传值 : 如果可以尽量使用引用返回数据
- 值传递:
-
友元 友元函数在头文件类中声明,友元函数可以访问私有的成员数据。
-
相同class的各个对象之间互为友元 即同类class之间可以访问私有成员。
-
操作符重载 对c++语言中原有的操作符进行重新定义器其作用的操作。
操作符重载使用: 返回值 operator 操作符(参数){函数体}
//防卫声明
#ifndef CONE_COMPLEX_H
#define CONE_COMPLEX_H
//类定义
class complex {
//公有成员
public:
//构造函数
//列表初始化c++ 11
complex(double r = 0,double i=0):re(r),im(i){}
//const 使用
double real() const {return re;}
double imag() const {return im;}
//操作符重载
complex operator+(const complex&);
complex& operator+=(const complex&);
//私有成员
private:
//私有成员定义
double re;
double im;
//友元声明
friend complex& __doapl(complex*,const complex&);
};
#endif //CONE_COMPLEX_H
源文件 .cpp
//引入头文件
#include "complex.h"
//成员函数定义实现
complex complex::operator+( const complex & r) {
return complex(this->re+r.re,this->im+r.im);
}
complex& complex::operator+=(const complex & r) {
return __doapl(this,r);
}
//友元函数的定义实现
complex& __doapl(complex* ths, const complex& r){
ths->re += r.re;
ths->im += r.im;
return *ths;
}
MAIN.CPP
#include <iostream>
#include "complex.h" //自定义类的导入
int main() {
//通过构造函数定义对象
complex a(1,2);
//调用成员函数
std::cout << a.real() <<std::endl;
complex c;
// 操作符重载的使用
c = a + a;
std::cout << c.real() << std::endl;
c += a;
std::cout << c.real() << std::endl;
return 0;
}