C++初学,问题寻解(希望找个大神带带,平常就交流交流,真心想学好)

图片说明
该问题遇到很多次了,一直不知道怎么弄

c++

6个回答

您这里的问题不是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函数去调用

两个print无法构成重载,因为参数返回值都一样,必须删掉一个。

devmiao
见了你女王大人喵姐还不跪下 回复Cyrusvic: 如果你肯采纳我的回答,留下信箱,我可以传一本电子书给你。照着学一定进步很快。
5 年多之前 回复
Cyrusvic
Cyrusvic 已经搞懂了,我少一个print()函数没有定义
5 年多之前 回复
Cyrusvic
Cyrusvic 是void print();和void print const();吗
5 年多之前 回复
Cyrusvic
Cyrusvic 是void print();和void print const();吗
5 年多之前 回复

是void print();和void print const();吗

试想一下,如果你是编译器,你要如何判断调用 print 时究竟调用的是哪一个实现的代码?
一般是根据参数的个数与类型不同来区分的。

对呀对呀,你真聪明~~

如果楼主已解决,请注意采纳意见

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