C++返回對(duì)象和引用的區(qū)別

30 31

C++返回對(duì)象和引用的區(qū)別

class A
{
punlic:
    A()
    {
        cout<<this<<" constructor"<<endl;
    }
    ~A()
    {
        cout<<this<<" destructor"<<endl;
    }
    A(const A & another)
    {
        cout<<this<<" cpy constructor from"<<&another<<endl;
    }   
    A& operator = (const A & another)
    {
        cout<<this<<" operator ="<<&another<<endl;
    }
};

//拷貝構(gòu)造發(fā)生的時(shí)機(jī)
//1.構(gòu)造新對(duì)象 A a ; A b = a;
//2.傳參或返回對(duì)象

//對(duì)于普通變量來說区转,傳引用效果不明顯
//對(duì)于類對(duì)象而言,傳對(duì)象效率很高
//傳引用等價(jià)于 擴(kuò)大了原對(duì)象的作用域

//棧上的對(duì)象是可以返回的胯盯,但不能返回棧上的引用(除非返回對(duì)象本身)
void func(A a)
{
    
}

int main()
{
    A x;
    A y = x;
    func(x);//發(fā)生一次拷貝構(gòu)造  函數(shù)不是引用的話 引用的話  就沒有拷貝構(gòu)造了
    return 0;
}

A func(A &a)
{
    return a;
}

int main()//一次構(gòu)造  一次拷貝構(gòu)造 
{
    A x;
    A t = func(x);
    cout<<"&t "<<&t<<endl;
    return 0;
}

int main()//兩次構(gòu)造 一次拷貝構(gòu)造 一次operator= 然后立馬析構(gòu)拷貝構(gòu)造的臨時(shí)變量
{
    A x;
    A t;
    t= func(x);
    cout<<"&t "<<&t<<endl;
    return 0;
}

A func()
{
    A b;
    return b;
}

int main()//兩次拷貝 一次operator = 然后立馬析構(gòu)b的
{
    A t;
    t= func();
    cout<<"&t "<<&t<<endl;
    return 0;
}

加法 大于 小于 等于 [] at

class myString
{
public:
    myString(const char *p = NULL);//默認(rèn)參數(shù)只能在聲明
    myString(const myString & another);
    myString& operator=(const myString & another);
    ~myString()车柠;
    
    myString operator+(const myString &another );
    bool operator>(const myString &another );
    bool operator<(const myString &another );
    bool operator==(const myString &another );
    char& operator[](int idx);
    char at(int idx);
   
   char *c_str();
private:
    char *_str;
}

myString myString::operator+(const myString &another)
{
    myString tmp;//char *=""; *this char * = "abcd",another char*="efg"
    delete []tmp._str;
    int len = strlen(this->_str);
    len += strlen(another._str);
    
    tmp._str = new char[len+1];
    memset(tmp._str,0,len+1);
    strcat(tmp._str,this->_str);
    strcat(tmp._str,another._str);
    return tmp;
}
bool myString::operator>(const myString &another )
{
    if(strcmp(this->_str,another._str)>0)
        return true;
    else
        return false;
}
bool myString::operator<(const myString &another )
{
    if(strcmp(this->_str,another._str)<0)
        return true;
    else
        return false;
}
bool myString::operator==(const myString &another )
{
    if(strcmp(this->_str,another._str)==0)
        return true;
    else
        return false;
}
char& myString::operator[](int idx)//xx[2] xx.operator[](int idx)
{
    return this->_str[idx];
}
char myString::at(int idx)
{
    return this->_str[idx];
}
int main()
{
    string x= "abc",y="efg";
    string z= x+y;
    cout<<z.c_str()<<endl;

    myString xx="abcd",yy ="efg";
    myString zz= xx +yy;//本質(zhì) xx.operator+(yy);
   cout<<xx[2]<<endl;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末察迟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缠局,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件考润,死亡現(xiàn)場離奇詭異狭园,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)糊治,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門唱矛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人井辜,你說我怎么就攤上這事绎谦。” “怎么了粥脚?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵窃肠,是天一觀的道長。 經(jīng)常有香客問我刷允,道長冤留,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任树灶,我火速辦了婚禮搀菩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘破托。我一直安慰自己肪跋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布土砂。 她就那樣靜靜地躺著州既,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萝映。 梳的紋絲不亂的頭發(fā)上吴叶,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音序臂,去河邊找鬼蚌卤。 笑死实束,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逊彭。 我是一名探鬼主播咸灿,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼侮叮!你這毒婦竟也來了避矢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤囊榜,失蹤者是張志新(化名)和其女友劉穎审胸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卸勺,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砂沛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了曙求。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尺上。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖圆到,靈堂內(nèi)的尸體忽然破棺而出怎抛,到底是詐尸還是另有隱情,我是刑警寧澤芽淡,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布马绝,位于F島的核電站,受9級(jí)特大地震影響挣菲,放射性物質(zhì)發(fā)生泄漏富稻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一白胀、第九天 我趴在偏房一處隱蔽的房頂上張望椭赋。 院中可真熱鬧,春花似錦或杠、人聲如沸哪怔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽认境。三九已至,卻和暖如春挟鸠,著一層夾襖步出監(jiān)牢的瞬間叉信,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工艘希, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留硼身,地道東北人硅急。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像佳遂,于是被迫代替她去往敵國和親营袜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容