`

C++中操作符operator的两种用法

    博客分类:
  • c++
阅读更多
1.operator overloading
C++可能通过operator 重载操作符,格式如下:类型T operator 操作符 (),如比重载+,如下所示
template<typename T> class A
{
public:
     const T operator + (const T& rhs)
     {
     return this->m_ + rhs;
     }
private:
     T m_;
};

又比如STL中的函数对象,重载(),如下所示
template<typename T> struct A
{
   T operator()(const T& lhs, const T& rhs){ return lhs-rhs;}
};


2 operator casting
C++可能通过operator 重载隐式转换,格式如下: operator 类型T (),如下所示
class A
{
public:
   operator   B* () { return this->b_;}
   operator const   B* () {return this->b_;}
   operator   B& () {return *this->b_;}
private:
   B* b_;
};

A a;
当if(a),编译时,其中它转换成if(a.operator B*()),其实也就是判断 if(a.b_)

分享到:
评论

相关推荐

    C++ operator两种用法.docx

    C++_operator两种用法 C++中的operator有两种用法:operator overloading(操作符重载)和operator casting(操作隐式转换)。下面我们将分别介绍这两种用法。 一、operator overloading(操作符重载) operator ...

    C++ operator关键字(重载操作符)的用法详解

    C++中的`operator`关键字用于实现操作符重载,这是C++语言中一个重要的特性,允许程序员自定义已有的运算符行为,以便于类对象能够更自然地进行各种操作。操作符重载使得用户定义的类型可以像基本数据类型一样进行...

    C++ 中重载 + 操作符的正确方法

    在C++中,重载`+`操作符可以通过两种方式实现:作为成员函数或非成员函数。 #### 成员函数方法 ```cpp class String { public: String operator+(const String &s); // 实现字符串连接 }; ``` 这种方式的问题在于...

    实现操作符重载 实现操作符重载

    在C++编程语言中,操作符重载是一种重要的特性,它允许我们为自定义类型定义已有的运算符的行为。操作符重载并不意味着创建新的运算符,而是为现有的运算符赋予新的含义,使得它们可以作用于自定义类型的对象。本文...

    C++操作符重载的变态用途之子类转换

    ### C++操作符重载的变态用途之子类转换 #### 概述 在C++中,操作符重载是一项非常强大的功能,它允许程序员重新定义内置操作符的行为,以便适用于用户自定义的数据类型(例如类)。通过操作符重载,可以实现更...

    总结C++中三种关于new的使用方法.docx

    C++ 程序设计语言中,new 是一个非常重要的操作符,用于在堆上动态分配内存和创建对象。然而,许多程序员对 new 的理解仅限于其基本用法,而忽视了其其他两个重要的使用方法。本文将对 C++ 中的三种 new 使用方法...

    single_operator_C++_single_

    标题“single_operator_C++_single_”暗示了这个压缩包可能包含关于C++中使用操作符实现单例模式的资料。描述中提到“c++ 单例模式用法说明,包含示例”,这表明文件可能包括代码示例和解释,旨在帮助开发者理解和...

    分数类中的操作符重载

    在C++编程中,操作符重载是一种强大的特性,它允许我们为自定义类型赋予标准操作符的行为。在这个“分数类”中,我们看到开发者已经实现了对基本分数类的操作符重载,使得分数对象可以像内置类型(如整数或浮点数)...

    总结C++中三种关于new的使用方法.pdf

    在C++编程语言中,`new`关键字有三种主要的使用方法,这些方法可以被归类为两大类:new表达式和new操作符。每种用法都有其特定的用途和场景,对于理解和掌握C++内存管理至关重要。 首先,我们来看最常用的**new...

    等号操作符使用陷阱实例

    本文将深入探讨等号操作符的使用方法,并通过实例帮助你避免常见误区。 1. **基础赋值操作符**:在大多数编程语言中,如C++、Java或Python,单个等号`=`用于赋值,将右侧表达式的结果赋给左侧的变量。例如: ```...

    C++中STL的基本用法总结

    `operator[]`和`at()`是两种常见的获取字符的方式,前者在越界时可能返回'\\0',而后者会在越界时抛出异常。因此,如果需要进行异常处理,推荐使用`at()`。`data()`和`c_str()`方法用于获取字符串的const char*表示...

    标准C++中的string类的用法总结

    `string`提供了两种访问其元素的方法:`operator[]`和`at()`。`operator[]`提供快速的非检查访问,而`at()`则在访问之前进行边界检查,如果超出范围会抛出`out_of_range`异常。此外,`string`还提供了`data()`和`c_...

    操作符重载

    3. **前缀与后缀**:自增/自减操作符有两种形式:前缀和后缀。前缀形式直接修改对象,而后缀形式则返回原始对象的副本并修改原对象。 4. **友元函数**:虽然在这个例子中没有使用,但在某些情况下,为了访问私有...

    C++常用运算符重载简介

    例如,在类hyong中重定义的+操作符hyong operator +(hyong m){},有类hyong的对象m和n,则调用操作符重载函数的方法有m+n和m.operator +(n),前一条语句会自动转换为后面这条语句,且m+n的表达式中最左边的对象是...

    实例003——操作符重载实现编译多态——复数的加法运算.zip

    例如,我们可以在一个函数中接受任何类型的复数,并且可以使用`+`操作符将它们相加,编译器会根据传入的对象类型自动选择正确的方法。 ```cpp void addComplexNumbers(const ComplexNumber& num1, const Complex...

    c++重载-实现复数相减

    在C++中,通过使用`operator`关键字可以自定义操作符的行为。对于复数类而言,我们可以重载减法操作符`-`,使其能够应用于两个复数之间。 ##### 3.2 减法操作符的实现 减法操作符被定义为一个成员函数,它接受另一...

    C++中不能重载的运算符

    这两种运算符都是C++语言的核心组成部分,不能被重载。 6. **新式类型转换运算符**: - C++引入了新的类型转换运算符,如 `static_cast&lt;&gt;`、`dynamic_cast&lt;&gt;`、`const_cast&lt;&gt;` 和 `reinterpret_cast&lt;&gt;`。这些...

    c++输入文件流ifstream用法详解_ims的博客-CSDN博客1

    C++中的输入文件流`ifstream`是`iostream`库的一部分,用于从磁盘文件中读取数据。`ifstream`类是`istream`类的派生类,继承了`istream`的所有功能,...理解其工作原理和使用方法对于编写高效、可靠的C++程序至关重要。

    string 类实现,构造函数、析构函数、操作符重载等

    在C++中,操作符重载是一种强大的特性,可以使用户自定义类型的对象像内置类型一样被使用。本示例中,`String`类重载了以下几个操作符: 1. **加法运算符(+)**: ```cpp String operator+(const String& other)...

    逆波兰表达式的C++实现

    逆波兰表达式,又称后缀表达式,是一种在计算领域广泛应用的数学表示方式,它将操作符放在操作数之后,避免了使用括号来明确运算优先级。这种表示方法非常适合用栈来处理,因为可以直观地按照“后进先出”(LIFO)的...

Global site tag (gtag.js) - Google Analytics