C++中函数指针遇上函数重载
2018-03-05 00:38
176 查看
C++中函数指针遇上函数重载
1、C++编译器会按照函数指针的类型自动选择重载函数test.cpp#include <iostream>
using namespace std;
void print(int a)
{
cout << "a is " << a << endl;
}
void print()
{
cout << "hello world" << endl;
}
typedef void (* Fun)(int);
typedef void (* Fun2)();
int main()
{
Fun pPrint = print;
Fun2 pPrint2 = print;
pPrint(12);
pPrint2();
return 0;
}
运行结果为:a is 12
hello world
2、重载函数作为参数传递时,特别形参的类型不是确定的函数指针类型时,如void *,例如Qt中的QObject::connect()函数,重载的信号或槽传入到connect时,可以使用static_cast<>来区别重载函数:
connect(subWidget, static_cast<void(SubWidget::*)()>(&SubWidget::switchWin), this, &MainWidget::switchWinSlot);connect()函数的第2个和第4个形参都是const char *类型,不是指定好的函数指针类型,所以我们可以通过static<>来区分重载函数的版本。
相关文章推荐
- C++当函数模板遇上函数重载
- C++回顾之成员函数重载、类与结构体、this指针
- 《 C++深度剖析》学习日志二十四——类中的函数重载
- [C++基础]重载、覆盖、多态与函数隐藏(4)
- C++ VS C#(12):函数的重载,类成员的static修饰,属性
- C++的函数重载篇(二)——运算符的重载
- C++默认参数与函数重载 注意事项
- c++ 成员函数的重载、覆盖与隐藏
- C++ 学习笔记(14)重载运算与类型转换、函数对象、function库
- c++中函数重载
- C++中成员函数的重载、覆盖和隐藏的区别
- 函数的重载 - C++快速入门06
- C++成员函数的重载、覆盖与隐藏
- C#调用C++ dll,并向调用的函数传递“函数指针”
- C++小知识:const成员函数与非const成员函数可以重载
- 转】C++默认参数与函数重载
- C++成员函数的重载、覆盖与隐藏
- C++之函数重载
- c++中的函数指针和类成员函数指针
- C++默认参数与函数重载 注意事项