为了账号安全,请及时绑定邮箱和手机立即绑定

赋初值函数还要求带返回值么?

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

class Student
{
public:
	void setName(string _name)
	{
		m_strName = _name;
	}
	string getName()
	{
		return m_strName;
	}
	void setGender(string _gender)
	{
		m_strGender=_gender;
	}
	string getGender()
	{
		return m_strGender;
	}
	int getScore()
	{
		return m_iScore;
	}
	int initScore()
	{
		m_iScore = 0;
	}
	void study(int _score)
	{
		m_iScore+=_score; //m_iScore=m_iScore+_score;
	}
	
private:
	string m_strName;
	string m_strGender;
	int m_iScore;
};
int main(void)
{
	Student stu;
	stu.initScore();
	stu.setName("wsq");
	stu.setGender("男");
	stu.study(8);
	stu.study(9);


	cout<<stu.getName()<<","<<stu.getGender()<<","<<stu.getScore()<<endl;

	system("pause");
	return 0;
}

提示错误 : error C4716: “Student::initScore”: 必须返回一个值

然后initScore()里面加retrun 0,调试成功。

老师视频用的VS2010,没加retrun 0也成功调试,我用的VS2012。哪位大神解释一下?

正在回答

3 回答

你的initScore函数声明有返回值,那在函数体中最后必须return一个相应的值。 只有main函数是个例外,main函数的最后不写返回语句的话,默认是return 0;

如果你的函数不需要返回什么值,就应该将返回值声明为void,返回值为void的函数最后可以不写 return; 语句。

还有,main函数的原型是返回int的,返回void是不规范的。

最后,以上都是C++标准规定的,一些编译器可能并没有完全遵守规范(老版本的VS尤甚)

1 回复 有任何疑惑可以回复我~

理解了,谢谢!

0 回复 有任何疑惑可以回复我~

void main()和int main(void)都是main函数,不同的是,void main()是不需要返回值的,也就是void关键字。int main(void)返回值是int类型,用int来指示,需要返回值。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103410    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

赋初值函数还要求带返回值么?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信