C++中如何区别重载函数的指针,此外,const可以用于重载成员函数,如何调用const重载版成员函数?
最近在看函数指针,想知道C++中如何区别重载函数的指针,此外,const可以用于重载成员函数,如何调用重载版成员函数?
1. 如何区别重载函数的指针?
如下:
#include <iostream>
using namespace std;
//void f()
//{
// cout << "f()" << endl;
//}
void f(int)
{
cout << "f(int)" << endl;
}
void main()
{
cout << f << endl;
cin.get();
}
此时运行程序是没有问题的,但如果不注释重载版的函数,就会报错,不清楚为什么?
如何能在两个版本的重载函数同时存在时输出函数指针正常?
2. 如何调用const重载版成员函数?
如下:
#include <iostream>
using namespace std;
class A
{
public:
void f(){cout << "f()" << endl;}
void f() const{cout << "f() const" << endl;}
};
void main()
{
A a;
a.f();
cin.get();
}
程序运行时正常的,但输出是:f(),说明调用了第一个成员函数,如何调用const重载的第二个成员函数?
请各位高手帮忙啊
1、乎悔不清楚你想问什么,重载函数是靠编译器在编译阶段选择函数版本,也就是说在运行时做顷圆其实只有一个函数版本被你调用,你这里用f,这不是函数调用啊,调用函数怎么能省()呢,也就是说只取函数的地址,可是由于你没有提供实参,编译阶段纯塌应该没有选择版本,所以取两个名字同为f的函数的地址当然报错
2、如果类对象是const型,那么对象只能调用由const来修饰的成员函数,反过来说,你把A a;
改成const A a; 就ok了
有很多,比如:new,delete,cout,cin,等等
但不知你要毕李这些做什么,因激数唤明凯为刚知道了这些,并不能干什么。