国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++[第五章]--指針和引用

這篇具有很好參考價值的文章主要介紹了C++[第五章]--指針和引用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

指針和引用

1、引用

引用就是別名,引用定義時必須初始化: int a; int &b=a; //b即為a的別名
如果不是形參,必須初始化,引用某一變量

2、指針

指針和c一樣;
this指針 在類的成員函數(shù)中使用,表示當(dāng)前對象;

3、右值引用

C++11 新增了一種引用
類型 && 引用名 = 右值表達(dá)式;
引入右值引用如:

int num = 10;
int &b = num; //正確 左值引用
int &c = 10; //錯誤

編譯器允許我們?yōu)?num 左值建立一個引用,但不可以為 10 這個右值建立引用。因此,引入右值引用。
如:

int num = 10;
//int && a = num;  //右值引用不能初始化為左值
int && a = 10;   //右值引用

和常量左值引用不同的是,右值引用還可以對右值進(jìn)行修改

int && a = 10;
a = 100;
cout << a << endl;

4、引用限定符

默認(rèn)情況下,對于類中用 public 修飾的成員函數(shù),既可以被左值對象調(diào)用,也可以被右值對象調(diào)用

某些場景中,我們可能需要限制調(diào)用成員函數(shù)的對象的類型(左值還是右值),為此 C++11 新添加了引用限定符。所謂引用限定符,就是在成員函數(shù)的后面添加 “&” 或者 “&&”,從而限制調(diào)用者的類型(左值還是右值)。

如:

class demo {
public:
    demo(int num):num(num){}
    int get_num()&{     //限定為右值使用int get_num()&&
        return this->num;
    }
private:
    int num;
};

const和引用限定符

const 和引用限定符修飾類的成員函數(shù)時,都位于函數(shù)的末尾。C++11 標(biāo)準(zhǔn)規(guī)定,當(dāng)引用限定符和 const 修飾同一個類的成員函數(shù)時,const 必須位于引用限定符前面
如:

class demo {
public:
    demo(int num,int num2) :num(num),num2(num2) {}
    //左值和右值對象都可以調(diào)用
    int get_num() const &{
        return this->num;
    }
    //僅供右值對象調(diào)用
    int get_num2() const && {
        return this->num2;
    }
private:
    int num;
    int num2;
};

注意,引用限定符不適用于靜態(tài)成員函數(shù)和友元函數(shù)

代碼實例:文章來源地址http://www.zghlxwxcb.cn/news/detail-607908.html


#if 1
#include <iostream>

using namespace std;

int add_one(int a)
{
	a = a+1;
	return a;
}

int add_one(int *a)
{
	*a = *a + 1;
	return *a;
}

int add_one_ref(int &b)   //引用
{
	b = b+1;
	return b;
}

int main(int argc, char **argv)
{
	int a = 99;
    int &c = a;
	cout<<"add_one(a)="<<add_one(a)<<endl;
	cout<<"a = "<<a<<endl;

	cout<<"add_one(&a)"<<add_one(&a)<<endl;
	cout<<"a = "<<a<<endl;

	cout<<"add_one_ref(a)"<<add_one_ref(a)<<endl;
	cout<<"a = "<<a<<endl;

        c++;
        
	cout<<"a = "<<a<<endl;
	cout<<"c = "<<c<<endl;

    c=c+10;
    cout<<"c = "<<c<<endl;
    cout<<"a = "<<a<<endl;

	return 0;
}
#else

#include <iostream>
using namespace std;

class demo {
public:
    demo(int num,int num2) :num(num),num2(num2) {}
    //左值和右值對象都可以調(diào)用
    int get_num() const &{
        return this->num;
    }
    //僅供右值對象調(diào)用
    int get_num2() const && {
        return this->num2;
    }
private:
    int num;
    int num2;
};

int main() {
    demo a(10,20);
    cout << a.get_num() << endl;        // 正確
    cout << move(a).get_num() << endl;  // 正確

    //cout << a.get_num2() << endl;     // 錯誤 
    cout << move(a).get_num2() << endl; // 正確
    return 0;
}

#endif

到了這里,關(guān)于C++[第五章]--指針和引用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C++ 學(xué)習(xí)系列 1 -- 左值、右值與萬能引用

    C++ 學(xué)習(xí)系列 1 -- 左值、右值與萬能引用

    簡單的說,左值可以放在等號的左邊,右值可以放在等號的右邊。 左值可以取地址,右值不能取地址。 1.1 左值舉例: 變量、函數(shù)或數(shù)據(jù)成員 返回左值引用的表達(dá)式 如 ++x、x = 1、cout \\\' \\\'? int x = 0 1.2 右值舉例: 返回非引用類型的表達(dá)式 如 x++、x + 1 除字符串字面量之外的字面

    2024年02月14日
    瀏覽(18)
  • C++右值引用(左值表達(dá)式、右值表達(dá)式)(移動語義、完美轉(zhuǎn)發(fā)(右值引用+std::forward))(有問題懸而未決)

    C++右值引用(左值表達(dá)式、右值表達(dá)式)(移動語義、完美轉(zhuǎn)發(fā)(右值引用+std::forward))(有問題懸而未決)

    在 C++ 中,表達(dá)式可以分為左值表達(dá)式和右值表達(dá)式。左值表達(dá)式指的是可以出現(xiàn)在賦值語句左邊的表達(dá)式,例如變量、數(shù)組元素、結(jié)構(gòu)體成員等;右值表達(dá)式指的是不能出現(xiàn)在賦值語句左邊的表達(dá)式,例如常量、臨時對象、函數(shù)返回值等。 右值是指將要被銷毀的臨時對象或

    2024年02月04日
    瀏覽(22)
  • MordernC++之左值(引用)與右值(引用)

    C++中左值與右值的概念是從C中繼承而來,一種簡單的定義是 左值能夠出現(xiàn)再表達(dá)式的左邊或者右邊,而右值只能出現(xiàn)在表達(dá)式的右邊 。 另一種區(qū)分左值和右值的方法是: 有名字、能取地址的值是左值,沒有名字、不能取地址的值是右值 。比如上述語句中a,b, c是變量可以

    2023年04月09日
    瀏覽(19)
  • 【C++11】左值引用和右值引用

    【C++11】左值引用和右值引用

    需要云服務(wù)器等云產(chǎn)品來學(xué)習(xí)Linux的同學(xué)可以移步/--騰訊云--/--阿里云--/--華為云--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。 ??? 目錄 一、新的類功能 1、新的默認(rèn)成員函數(shù) 2、類成員變量初始化 3、強制生成默認(rèn)函數(shù)的default 4、禁止生成默認(rèn)函

    2023年04月17日
    瀏覽(24)
  • 【送書】【C++11】左值引用和右值引用

    【送書】【C++11】左值引用和右值引用

    需要云服務(wù)器等云產(chǎn)品來學(xué)習(xí)Linux的同學(xué)可以移步/--騰訊云--/--阿里云--/--華為云--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。 ??? 目錄 一、新的類功能 1、新的默認(rèn)成員函數(shù) 2、類成員變量初始化 3、強制生成默認(rèn)函數(shù)的default 4、禁止生成默認(rèn)函

    2023年04月09日
    瀏覽(18)
  • 左值引用、右值引用,std::move() 的匯編解釋

    左值引用、右值引用,std::move() 的匯編解釋

    1:左值引用 引用其實還是指針,但回避了指針這個名字。由編譯器完成從地址中取值。以vs2019反匯編: 如圖,指針和引用的匯編代碼完全一樣。但引用在高級語言層面更友好,對人腦。比如可以少寫一個 * 號和 - 。 ,以下是指針和引用的使用: 以上就是左值引用,引用的

    2024年02月04日
    瀏覽(15)
  • C++ 左值和右值

    C++ 左值和右值

    在C++11中所有的值必屬于左值、右值兩者之一,右值又可以細(xì)分為純右值、將亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、沒有名字的就是右值(將亡值或純右值)。舉個例子,int a = b+c, a 就是左值,其有變量名為a,通過a可以獲取該變量的地址;

    2024年02月14日
    瀏覽(14)
  • C++左值右值完美轉(zhuǎn)發(fā)轉(zhuǎn)移

    英文含義: 左值(Lvalue) : Locator value ,意味著它指向一個具體的內(nèi)存位置。 右值(Rvalue) : Read value ,指的是可以讀取的數(shù)據(jù),但不一定指向一個固定的內(nèi)存位置。 定義 左值 :指的是一個持久的內(nèi)存地址。左值可以出現(xiàn)在賦值操作的左側(cè)或右側(cè)。例如,變量、數(shù)組的元

    2024年03月10日
    瀏覽(35)
  • C++面試八股文:什么是左值,什么是右值?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第16面: 面試官:什么是左值,什么是右值? 二師兄:簡單來說,左值就是可以使用 符號取地址的值,而右值一般不可以使用 符號取地址。 二師兄:一般左值存在內(nèi)存中,而右值存在寄存器中。 二師兄:嚴(yán)格意義上分,右值

    2024年02月09日
    瀏覽(17)
  • C++:深入理解C++11新特性:Chapter3:左值和右值

    C++:深入理解C++11新特性:Chapter3:左值和右值

    在C語言中,我們常常會提起左值(lvalue),右值(rvalue)這樣的稱呼,而在編譯程序時,編譯器有時也會報出錯誤信息中包含 左值,右值說法。不過左值、右值通常不是通過一個嚴(yán)謹(jǐn)?shù)亩x而為人所知。下面我通過這樣一個例子,來引導(dǎo)大家認(rèn)識: 左值,右值,左值引用,右

    2024年02月04日
    瀏覽(102)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包