一.typedef
1.定义一种类型的别名
int main()
{
typedef char* PCHAR;
PCHAR pa,pb;
pa = "hello";
pb = "hello";
return 0;
}
2.定义结构体别名
typedef struct tagPOINT1
{
int x;
int y;
}POINT;
POINT p1;
3.为复杂的声明定义一个简单的别名
typedef int (*A) (char, char);
A是我们定义的别名,表示的是一个指向函数的指针,
该函数有两个char类型的参数,返回一个int类型的值。
则A类型的对象可以指向任何符合上述规则的函数。
#include<iostream>
using namespace std;
typedef int (*A)(char,char);
int fun0(char a,char b);
int fun1(char a,char b);
int main()
{
A a;
a = fun0;
a('a','b');
a = fun1;
a('a','b');
return 0;
}
int fun0(char a,char b)
{
cout<<"fun0"<<endl;
return 0;
}
int fun1(char a,char b)
{
cout<<"fun1"<<endl;
return 0;
}
输出结果:
fun0
fun1
引用于:https://www.cnblogs.com/shijingjing07/p/5591896.html
关于第3点的例子:
Class B{
vector<int> list = {1,2,3.0,4,5,6,7};
void Sort(){
}
}
Class C : B{
typedef bool (A) (int a, int b);
static A* sortFns[];
A* m_pfnSort;
void Test(){
sortFns[] = {
nullptr,
&Sort,
}
int toFind = 1;
m_pfnSort = sortFns[1];
int* p= std::upper_bound(list.begin(), list.end(), toFind, m_pfnSort);
std::cout<<(*p)<<endl;
}