C++中如何区别重载函数的指针,此外,const可以用于重载成员函数,如何调用const重载版成员函数?

最近在看函数指针,想知道C++中如何区别重载函数的指针,此外,const可以用于重载成员函数,如何调用重载版成员函数?1.如何区别重载函数的指针?如下:#include<... 最近在看函数指针,想知道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重载的第二个成员函数?
请各位高手帮忙啊
展开
 我来答
zxjluohe1
推荐于2016-06-22 · TA获得超过112个赞
知道答主
回答量:65
采纳率:0%
帮助的人:48.8万
展开全部
1、不清楚你想问什么,重载函数是靠编译器在编译阶段选择函数版本,也就是说在运行时其实只有一个函数版本被你调用,你这里用f,这不是函数调用啊,调用函数怎么能省()呢,也就是说只取函数的地址,可是由于你没有提供实参,编译阶段应该没有选择版本,所以取两个名字同为f的函数的地址当然报错
2、如果类对象是const型,那么对象只能调用由const来修饰的成员函数,反过来说,你把A a;
改成const A a; 就ok了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虾志色96
2011-09-16 · TA获得超过423个赞
知道小有建树答主
回答量:690
采纳率:33%
帮助的人:416万
展开全部
有很多,比如:new,delete,cout,cin,等等
但不知你要这些做什么,因为刚知道了这些,并不能干什么。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式