跟著做的C++20教程-例項19-函式指標
阿新 • • 發佈:2021-02-17
技術標籤:跟著做的C++20教程c++指標
目錄
例項概要
函式指標的定義和使用
例項程式碼
例項中定義兩個函式,一個將所有資訊顯示在一行,一個將資訊顯示在多行。物件可以根據自己的需要選擇使用哪個函式,實現方式就是函式指標。
#include <iostream>
#include <string>
void printMyInfoInSingleLine(int , double, std::string&);
void printMyInfoInMultipleLine(int, double, std::string& );
class Myself
{
public:
int age = 32;
double weight = 80.00;
std::string year = "2021";
void (*printInfo)(int, double, std::string&); //定義函式指標
};
int main(int argc, char** argv)
{
Myself thisYear;
thisYear.printInfo = printMyInfoInSingleLine;
thisYear.printInfo(thisYear.age, thisYear. weight, thisYear.year);
Myself nextYear;
nextYear.printInfo = printMyInfoInMultipleLine;
nextYear.age += 1;//年齡加一歲
nextYear.weight -= 10; //體重減10kg
nextYear.year = "2022";
nextYear.printInfo(nextYear.age, nextYear.weight, nextYear.year);
return 0;
}
void printMyInfoInSingleLine(int age, double weight, std::string& year)
{
std::cout << "In year " << year << ", my age is " << age << ", my weight is " << weight << std::endl;
}
void printMyInfoInMultipleLine(int age, double weight, std::string& year)
{
std::cout << "In year" << year << ", my age is " << age << std::endl;
std::cout << "In year" << year << ", my weight is " << weight << std::endl;
}
執行結果
In year 2021, my age is 32, my weight is 80
In year2022, my age is 33
In year2022, my weight is 70
例項解釋
- 函式指標
函式指標,與普通指標沒有區別。也是一個變數,這個變數儲存了一個地址,這個地址指向一個函式。 - 函式指標變數的定義
函式指標變數的定義與函式宣告的格式極其相似,只是在函式名前加上*
,然後用括號將*
和函式名括起來。例如,想定義一個指向int test(int,int,double)
的函式指標,格式為int (*testPointer)(int, int, double)
。 - 通過函式指標變數呼叫函式
通過函式指標變數呼叫函式,與普通呼叫函式的格式一致,如呼叫int (*testPointer)(int, int, double)
的格式為testPointer(1,2,3.0d)