|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 luckstudent 于 2016-10-14 12:40 编辑
#include<iostream>
#include<string>
using namespace std;
int fun1(const string& s)//返回字符串的长度
{
return s.size();
}
int fun2(const string& s)//返回字符串每个字符对应int值的和
{
int length = 0;
for(unsigned int i = 0; i != s.size(); ++i)
length +=s[i];
return length;
}
auto getFun(int i) -> int (*)(const string&)//根据i的值来选择返回指向上述哪个函数的函数指针。
{
if(i == 0)
return fun1;
else
return fun2;
}
int *getPoint(int i)//返回一个int型指针
{
int *p = new int;
*p = i;
return p;
}
int main()
{
string s = "abc";
cout<<(getFun(1))(s)<<endl;//可以正常工作
cout<<getFun(0)(s)<<endl;
cout<<getFun(0)<<endl; //为什么这里函数指针返回1,而不是一个地址值。
cout<<getPoint(10)<<endl;//返回地址值
return 0;
} |
|