1. 程式人生 > >C++中操作符operator的兩種用法

C++中操作符operator的兩種用法

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用法

1.operator overloadingC++可能通過operator 過載操作符,格式如下:型別T operator 操作符 (),如比過載+,如下所示template<typename T> class A{public:     const T oper

奪命雷公狗C/C++-----5---include的用法

編寫 logs ima log -1 們的 頭文件 技術 我們 我們的include是有兩種用法的,如: 上面這種就是在頭文件方式進行引入的, include <> 括號的是包含系統文件的。。。。 還有一種,比如我首先寫個頭文件先,如下所示:

C#“?”有三用法

c 1、可空類型修飾符(?):引用類型可以使用空引用表示一個不存在的值,而值類型通常不能表示為空,例如:string str=null;是正確的。int i=null;編譯器將報錯。為了使值類型也可為空,可空類型出現了,可空類型使用可空類型修飾符?來表示,表現形式為T?。例:int?表示是可空的整形,Date

c++for的四用法

四種 mes pre using In col space c++ names #include <algorithm> #include <vector> #include <iostream> using namespace

jspinclude 的用法

1.兩種用法 靜態include:  <%@ inlcude file =”header.jsp” %> 此時引入的是靜態的jsp檔案,它將引入的jsp中的原始碼原封不動地附加到當前檔案中,所以在jsp程式中使用這個指令的時候file裡面的值(即要匯入的檔案)不能帶多餘

C++#include的方式

一、#include< >   #include< > 引用的是編譯器的類庫路徑裡面的標頭檔案。   假如你編譯器定義的自帶標頭檔案引用在 C:\Keil\c51\INC\ 下面,則 #include<stdio.h> 引用的就是 C:

jspinclude的用法

<%@ include file=” ”%> include指令 <jsp:include page=” ” flush=”true”/> include動作 主要有兩方面的不同: 1.執行時間上 <%@ include file=” ”

C#using的幾用法

    前言          在學習C#中我們開頭就看見名稱空間namespace這顯示很多using,對於這個不是怎麼了解。看著一行行的,不帶重複的。一次就跟著一個命名,就在百度裡查了查這到底是啥

JAVAsuper的用法

http://www.cnblogs.com/rollenholt/articles/2033989.html 通過用static來定義方法或成員,為我們程式設計提供了某種便利,從某種程度上可以說它類似於C語言中的全域性函式和全域性變數。但是,並不是說有了這種便利,你便可以隨處使用,如果那樣的話,你

c#using的三用法

1.using指令。using + 名稱空間名字,這樣可以在程式中直接用命令空間中的型別,而不必指定型別的詳細名稱空間,類似於Java的import,這個功能也是最常用的,幾乎每個cs的程式都會用到。 例如:using System; 一般都會出現在*.cs中。 2.us

js——jspinclude的用法

1.兩種用法 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 2.用法區別 (1)執行時間上區別 <%@ include file=”relativ

c++ operator用法

c++中的operator 有兩種用法,一種是(operator overloading)運算子過載,一種是(operator casting)操作隱式轉換 例項程式碼如下: #include <iostream> using namespace std;

C++operator用法

#include  "stdafx.h" #include <iostream>  #include <string>  using  namespace   std ;    /* C++中的operator主要有兩個作用,第一種:   操作符的過載,一是自定義物件型別的隱式轉換。 

C++operator用法

首先宣告,轉載自:http://blog.csdn.net/skdkjzz/article/details/45872801 轉換函式的名稱是型別轉換的目標型別,因此,不必再為它指定返回值型別;轉換函式是被用於本型別的數值或變數轉換為其他的型別,也不必帶引數 在寫

C++模板的typename的用法

在模板引數中,typename與class的使用是一樣,如: template<typename T> class A{}; template<class T>

c ++的operator用法

operator,它有兩種用法,一種是operator overloading(操作符過載),一種是operator casting(操作隱式轉換)。 1.operator overloading C++可通過operator 過載操作符,格式如下:型別T opera

VS2010CUDA和C++混合編譯(方式)

在做專案整合的時候需要用到cpp和cuda檔案聯調,自己摸索了兩種方式實現cpp和cu檔案混合編譯。 本文環境: windows7 64位VS2010CUDA5.5英偉達顯示卡Tesla C1060 前言 裝好CUDA 5.5 sdk後,預設會自動新增好系統環境變數

JSP的include的用法

我們都知道在jsp中include有兩種情勢,分別是     <%@ include file=” ”%>                                       ——指令元素     <jsp:include page=” ” flu

學習筆記-ListView控制元件的重新整理-setTag的用法

在ListView中,有時候需要動態更新其中某些控制元件的內容。更新的方法有以下幾個: 方法一:更新所有item的資訊 在更新後,直接呼叫adapter.notifyDataSetChanged();  但是這是最耗資源的做法。通常我們只想更新一個item中的其中某個vie

java return 的常見的用法

一:return語句總是用在方法中,有兩個作用:     一個是返回方法指定型別的值(這個值總是確定的),      一個是結束方法的執行(僅僅一個return語句)。 二:例項1 -- 返回一個St