C++函数重载问题,大一小白不太懂

virtual void f(int *p){
}
virtual void f(const int *p){

}

virtual void f(int *p){
}
virtual void f( int *const p){
}

请问前面一个为什么是函数重载而后一个不是

c++

3个回答

class X
{
public:
X( int val ): j( val ), i( j ) { }//请问为何给val赋值4,输出时是j=4,i=0;
// ...
private:
int i;
int j;
};

Sephoenix
Sephoenix 冒号后面是初始化列表,不管你怎么写,它初始化是按照你声明变量的顺序来做的,所以先初始化i(j)这句,这时候j还没赋值为4,所以……只要你声明顺序改一下就好了,int j,i;
2 年多之前 回复

一个是修饰指针值本身,一个是修饰参数类型,当然只有参数类型不同才可以构成重载啊

应该说的是子类重载父类的两个函数,然后后一个不算吧……
因为int const*
const int*
不是一个类型啊

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问