C++类实现

1. 运算符重载

可以通过非成员函数(友元函数)和成员函数进行重载。但是赋值=、函数调用()、下标运算[]、指针访问成员->只能使用成员函数进行重载。

类声明:

class Time{

...

Time operator+(const Time & t) const;

}

类方法实现:

Time Time::operator+(const Time & t) const

{

...

}

使用:

A + B == A.operator+(B)

支持A + B+ C方式。


2. 友元函数重载运算符

友元函数、友元类、友元成员函数

友元函数和类的成员函数具有相同的访问权限,但它不是成员函数不能使用成员运算符调用。

类声明:

class Time{

...

friend Time operator*(double m, const Time & t);//只在类声明中才要friend关键字

}

类方法实现:

Time operator*(double m, const Time & t) 

{

...//偷懒方法 return t*m; 从而调用之前的成员函数重载方法。

}

使用:

A = 2 * B  ==  A = operator*(2, B)

重载<<:

ostream & operator<<(ostream & os, const Time & t)

{

os << t....;

return os;

}


3. 默认构造函数

如果没有提供任何函数,C++ 将创建默认构造函数。如果定义了构造函数,C++ 将不会定义默认构造函数。

Time::Time() //没有任何参数

{

}


4. 复制构造函数

若未定义,C++ 提供。

用于将一个对象复制到新创建的对象中。它用于初始化过程中,而不是常规赋值过程中。

原型通常为 Class_name(const Class_name & );

使用情况:

      新创建一个对象并将其初始化为同类现有对象时。 Time A = B;|| Time A = Time(something); //创建临时对象然后复制给A

      每当程序生成对象副本,即函数按值传递对象的时候都会使用复制构造函数。

浅复制,也即复制成员的值,当遇到字符串的时候应该自定义深复制传字符串而不是地址。


5. 赋值运算符

https://www.cnblogs.com/zpcdbky/p/5027481.html

若未定义,C++ 提供。

将已有对象赋值给另一个对象时,将使用重载的赋值运算符。

原型(只能由成员函数重载):Class_name & Class_name::operator=(const Class_name &);//返回引用是为了连续赋值。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值