在C++中,有函数重载和操作符重载,函数重载比较好理解,相对简单一点。
操作符重载主要针对用户自建的类,要进行一些运算,因为编译器不认识它们。
操作符重载: Complex operator+ (Complex& c1,Complex& c2);
complex就是C++的类,可当做是用户新建的;
operator是个关键字,可以形像的当做一个函数名字,重载了这个+运算符
(xxx, xxx);就是参数表,数量不限;
引用https://www.runoob.com/cplusplus/cpp-overloading.html的文章,
里面的 Box3 = Box1 + Box2;就是用的重载+运算符,请您细品。。。
如果理解了,来一个大BOS级的:
template<typename T> class message : public TBaseMessage { public: INLINE message() : TBaseMessage() { } INLINE const T& operator= (const T& msg) { TCritSect cs; *(const_cast<T*>(&Msg)) = msg; return const_cast<const T&>(Msg); } INLINE operator T() const { TCritSect cs; return const_cast<const T&>(Msg); } INLINE void out(T& msg) { TCritSect cs; msg = const_cast<T&>(Msg); } protected: volatile T Msg; };
上面就是RTOS里面的,类,模板,构造 ,成员函数,成员数据,操作符重载,都有了,我们细品。
回味无穷。。。哈哈,在实际使用时,对像XXX = XXX就OK了,会重载operator=这个。
时间2021-11-18
在之前的 C++拷贝、赋值函数 随记中,细心的兄弟可能会发现,实现的工作原理,就是我们这个随记的操作符重载
C++每一个知识点都是环环相扣的,
时间2022-5-14
一个有用的C++网站 https://en.cppreference.com/w/Main_Page