17:特殊类成员:函数指针5
2015-04-06 15:24
204 查看
1, 函数首地址被赋值给了函数名,故函数名是函数内存地址的首地址。 2, 一个指向函数的指针|必须确保该函数被定义 | |且分配了内存 |否则他将指向一个空地址,这是指针的大忌。 3,long(*func)(int) : 声明了一个指针,该指针指向一个函数。 long*func1(int) :声明了一个函数,该函数返回一个指针。 4,定义: float (*fp)(float&, float&); fp=&rectangle; fp=rectangle; 都行
#include <iostream> #include <string> using namespace std; float (*fp)(float&, float&); void (*p)(float&, float&); //函数调用列表,将极大的减少代码量 float rectangle(float &x, float &y) { return x * y; } float triangle(float &x, float &y) { return x * y * 0.5; } void Swap(float &x, float &y) { float n = x; x = y; y = n; } void print(float &x, float &y) { cout << "长为:" << x << " 宽为:" << y << endl; } bool check(string str) { for(int i=0; i<str.length();i++) { if((str[i] > '9' || str[i] < '0')&&(str[i]!='.')) { return false; } } return true; } void get(float &x, float &y) { cout << "请输入x的新值: " << endl; std::string str1; cin >> str1; while(!check(str1)) { cout << "输入的不是数字,请重新输入:x=" << endl; cin >> str1; } cout << "请输入y的新值: " << endl; std::string str2; cin >> str2; while(!check(str2)) { cout << "输入的不是数字,请重新输入:y=" << endl; cin >> str2; } x = atof(str1.c_str()); y = atof(str2.c_str()); } int main() { bool quit=false; float a = 2, b=3; int choice; while(quit==false) { cout << " 0: quit 1: input x,y 2 triangle 3 rectangle 4 swap x y" << endl; cin>>choice; switch(choice) { case 1: cout << "设定之前长和宽的值"; /*print(a, b); get(a, b); cout << "设定之后长和宽的值"; print(a, b);*/ p=get; break; case 2: //print(a, b); cout << "三角形的面积为: ";/* << triangle(a,b) << endl;*/ fp=triangle; break; case 3: //print(a, b); cout << "长方形的面积为: ";/* << rectangle(a,b) << endl;*/ fp=rectangle; break; case 4: cout << "交换之前长和宽的值"; /*print(a, b); swap(a, b); cout << "交换之后长和宽的值"; print(a, b);*/ p=Swap; break; default: quit=true; break; } if(choice==1 || choice==4) { print(a, b); p(a, b); print(a, b); } if(choice==2 || choice==3) { print(a, b); cout << "面积为:" << fp(a, b) << endl; } } }
相关文章推荐
- 第十七章 特殊成员_函数指针也可以做为参数
- 第十七章 特殊成员_成员函数指针数组
- 类成员函数指针的特殊之处
- 第十七章 特殊成员_函数指针数组
- 第十七章 特殊成员_使用typedef简化函数指针的声明
- 第十七章 特殊成员_函数指针
- 成员函数指针——为什么那么复杂?
- 成员函数指针与高性能的C++委托(上中下篇)
- C++特性探寻-继承、成员函数、this指针
- C++的类成员函数指针
- 怎样将成员函数指针强制转换成void*指针?
- 成员函数指针与高性能的C++委托(中篇)
- C++的一些基本功,包括对常量成员函数的一些特殊说明
- 转:关于在C++内用指针调用类的成员函数
- 指向成员函数的指针类型成员变量
- 获得全局函数和成员函数指针的部分traits的方法
- Item 16. 指向成员函数的指针
- C++指针直接调用类成员函数探讨
- C++成员函数指针一种用法
- 成员函数指针【转贴】