欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++指向類成員的指針詳解

 更新時間:2021年09月16日 15:23:33   作者:weixin_41914179  
指向類成員的指針總的來講可以分為兩大類四小類(指向數(shù)據(jù)成員還是成員函數(shù),指向普通成員還是靜態(tài)成員),希望本片文章能給你帶來幫助

序言:在C++中,可以定義一個指針,使其指向類成員函數(shù)或或成員函數(shù),然后通過指針來訪問類的成員,這包括指向?qū)傩猿蓡T的指針和指向成員函數(shù)的指針。

一.指向普通變量和函數(shù)的指針

指向普通變量的指針

int a=100;
int *p = &a;

指向函數(shù)的指針(即函數(shù)指針)

int(*p)(int, int);

這條語句的理解:定義了一個指向函數(shù)的指針變量p,首先它是一個指針變量(*p),其次前面的int表示指針變量可以指向返回類型為int型的函數(shù),后面括號中的兩個int表示這個指針變量可以指向兩個參數(shù)都是int型的函數(shù)。所以合起來的意思就是:定義了一個指針變量p,該指針變量可以指向返回值類型為int型,且有兩個整形參數(shù)的函數(shù),p的類型為int(*)(int, int)

函數(shù)指針的定義方式為:

函數(shù)返回值類型 (* 指針變量名) (函數(shù)參數(shù)列表);

示例

int Func(int x);   /*聲明一個函數(shù)*/
int (*p) (int x);  /*定義一個函數(shù)指針*/
p = Func;          /*將Func函數(shù)的首地址賦給指針變量p*/

二.指向類成員的指針

1.指向類數(shù)據(jù)成員的指針

//定義和賦值(和類相關(guān))
數(shù)據(jù)類型 類名:: *指針名 = &類名::成員名
//使用(和對象相關(guān))
//由于類不是運行時 存在的對象。因此,在使用這類指針時,需要首先指定類的一個對象,然后,通過對象來引用指針?biāo)赶虻某蓡T。
類對象名.*指向非靜態(tài)數(shù)據(jù)成員的指針
類對象指針->*指向非靜態(tài)數(shù)據(jù)成員的指針

2.指向類成員函數(shù)的指針

//定義和賦值(和類相關(guān))
函數(shù)返回類型名 (類名::*函數(shù)指針名)(參數(shù)列表) = &類名::成員函數(shù)名
//使用(和對象相關(guān))
//由于類不是運行時存在的對象。因此,在使用這類指針時,需要首先指定類的一個對象,然后,通過對象來引用指針?biāo)赶虻某蓡T。
(類對象名.*指向非靜態(tài)成員函數(shù)的指針)(參數(shù)列表)
(類對象指針->*指向非靜態(tài)成員函數(shù)的指針)(參數(shù)列表)

示例

class Stu
{
public:
	Stu(string sn,int ia):
	    name(sn),age(ia)
	{
	}
	void print()
	{
		cout<<name<<"---"<<age<<endl;
	}
public:
	string name;
	int age;
};
int main()
{
	int a=100;
	int *p = &a;
	Stu s1("zhang",14);
	Stu s2("lili",19);
	Stu * pp = new Stu("wojiushiwo",30);
	int Stu::*pa = &Stu::age;  //pa是指向類成員變量age的指針變量
	string Stu::*pb = &Stu::name;  //pb是指向類成員變量name的指針變量
	cout<<s1.name<<s2.name<<endl;  //值:zhanglili
	cout<<s1.*pa<<"---"<<s1.*pb<<endl;  //值: 14---zhang 
	void (Stu::*fa)()=&Stu::print;  //fa是指向類成員函數(shù)的函數(shù)指針
	(s1.*fa)();   //值:zhang---14
	(s2.*fa)();   //值:lili---19
	(pp->*fa)(); //值:wojiushiwo---30
	return 0;
}

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用椎棧

    C語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用椎棧

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用椎棧,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++開發(fā)之PugiXML庫基礎(chǔ)用法示例詳解

    C++開發(fā)之PugiXML庫基礎(chǔ)用法示例詳解

    PugiXML庫是一個功能強大、簡單易用的C++ XML解析庫,它提供了一組方便的函數(shù)來解析、創(chuàng)建和修改XML文檔,本文介紹了如何使用PugiXML庫來解析、創(chuàng)建和修改XML文檔,以及如何處理錯誤和異常,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • codeblocks 對‘cv::waitKey(int)’未定義的引用方式

    codeblocks 對‘cv::waitKey(int)’未定義的引用方式

    今天小編就為大家分享一篇codeblocks 對‘cv::waitKey(int)’未定義的引用方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 利用C語言實現(xiàn)掃雷小游戲

    利用C語言實現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了利用C語言實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • C語言實現(xiàn)C++繼承和多態(tài)的代碼分享

    C語言實現(xiàn)C++繼承和多態(tài)的代碼分享

    本文主要給大家簡單講訴了C和C++的區(qū)別以及如何使用C語言模擬實現(xiàn)C++繼承和多態(tài),并附上示例代碼,是篇相當(dāng)不錯的文章,推薦給喜歡C語言的小伙伴們
    2017-07-07
  • VS2022+libtorch+Cuda11.3安裝測試教程詳解(調(diào)用cuda)

    VS2022+libtorch+Cuda11.3安裝測試教程詳解(調(diào)用cuda)

    這篇文章主要介紹了VS2022+libtorch+Cuda11.3安裝測試(調(diào)用cuda),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C++的最短路徑的弗洛伊德算法案例講解

    C++的最短路徑的弗洛伊德算法案例講解

    這篇文章主要介紹了C++的最短路徑的弗洛伊德算法案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 推薦幾款實用的C++ 在線工具

    推薦幾款實用的C++ 在線工具

    這篇文章主要推薦了幾款實用的C++ 在線工具,幫助大家更好的進(jìn)行c++開發(fā),感興趣的朋友可以了解下載。
    2020-10-10
  • C++運算符重載限制介紹

    C++運算符重載限制介紹

    這篇文章主要介紹了C++運算符重載限制,關(guān)于運算符的重載并不是隨心所欲的。C++給出了一些限制,從而保證了規(guī)范,以及程序運行的準(zhǔn)確性,下面來了解C++運算符重載限制的詳細(xì)內(nèi)容吧,需要的朋友也可以參考一下
    2022-01-01
  • C++實現(xiàn)LeetCode(137.單獨的數(shù)字之二)

    C++實現(xiàn)LeetCode(137.單獨的數(shù)字之二)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(137.單獨的數(shù)字之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論