1. 程式人生 > 其它 >跟著做的C++20教程-例項19-函式指標

跟著做的C++20教程-例項19-函式指標

技術標籤:跟著做的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)