该问题遇到很多次了,一直不知道怎么弄
两个print无法构成重载,因为参数返回值都一样,必须删掉一个。
是void print();和void print const();吗
试想一下,如果你是编译器,你要如何判断调用 print 时究竟调用的是哪一个实现的代码?
一般是根据参数的个数与类型不同来区分的。
对呀对呀,你真聪明~~
您这里的问题不是Print函数不能重载,而是,您声明了常成员函数void Print()const,但是却没有定义他
面向对象程序设计中,为了体现封装性,通常不允许直接修改类对象的数据成员。若要修改类对象,应调用公有成员函数来完成。为了保证const对象的常量性,编译器须区分不安全与安全的成员函数(即区分试图修改类对象与不修改类对象的函数)
声明:<类型标志符>函数名(参数表)const;
说明:
(1)const是函数类型的一部分,在实现部分也要带该关键字。
(2)const关键字可以用于对重载函数的区分。
因此前面的两个Print函数是可以重载的
void Print( )
{
cout <<"使用普通成员变量..." <<endl;
}
void Print( ) const
{
cout <<"使用常成员变量..." <<endl;
}
1、常成员函数可以被其他成员函数调用。
2、但是不能调用其他非常成员函数。
3、可以调用其他常成员函数。
因此如果COne类中没有声明 void Print( ),one也可以调用 void Print( )const
但是如果没有声明 void Print( )const函数,那么two将找不到Print函数去调用
如果楼主已解决,请注意采纳意见