C++操作符重載(二)

1.這里重載了 -> * 構(gòu)造一個智能指針,在提取復雜對象中一個屬性值的時候,也可以使用 * ->等符號 這里叫智能指針.
2.注意類的構(gòu)造函數(shù)中傳參的構(gòu)造寫法.

#include <iostream>
using namespace std;

class Test
{
public:
    Test(){
        this->a = 10;
        
        
    }
    void printT(){
        cout<<a<<endl;
    }
private:
    int a;
};

class MyTestPointer
{
public:
    MyTestPointer(){
        
        p = NULL;
    }
    MyTestPointer(Test *p){
      
        this->p = p;
    }
    
    ~MyTestPointer(){
        delete p;
    }
    
    Test *operator->()
    {
        return p;
    }
    
    Test& operator *(){
        return *p;
    }
    
private:
    Test *p;
};




int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    
    
    Test *p = new Test;
    
    p->printT();
    
    
    delete p;
    
    MyTestPointer myp = new Test;  //這里調(diào)用的 含有Test *的構(gòu)造函數(shù)  
    
    myp->printT();//重寫 ->
    
    
    
    Test(*myp).printT();//重寫 * 提取符
    
    
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容