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重载的第二个成员函数?
请各位高手帮忙啊 展开
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重载的第二个成员函数?
请各位高手帮忙啊 展开
2个回答
展开全部
1、不清楚你想问什么,重载函数是靠编译器在编译阶段选择函数版本,也就是说在运行时其实只有一个函数版本被你调用,你这里用f,这不是函数调用啊,调用函数怎么能省()呢,也就是说只取函数的地址,可是由于你没有提供实参,编译阶段应该没有选择版本,所以取两个名字同为f的函数的地址当然报错
2、如果类对象是const型,那么对象只能调用由const来修饰的成员函数,反过来说,你把A a;
改成const A a; 就ok了
2、如果类对象是const型,那么对象只能调用由const来修饰的成员函数,反过来说,你把A a;
改成const A a; 就ok了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有很多,比如:new,delete,cout,cin,等等
但不知你要这些做什么,因为刚知道了这些,并不能干什么。
但不知你要这些做什么,因为刚知道了这些,并不能干什么。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询