关闭

第六周实验指导--下面的程序存在编译错误,请给出两种修改方案--说明处理此类问题的原则是什么

771人阅读 评论(0) 收藏 举报
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:
下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,说明我倾向于用哪一种?为什么?处理此类问题的原则是什么?* 作    者:         雷恒鑫                       
* 完成日期:     2012    年 03      月    25   日
* 版 本 号:       V1.0   
* 对任务及求解方法的描述部分
* 输入描述: 
* 问题描述: 
* 程序输出: 

* 程序头部的注释结束

*/

以下是存在编译错误的程序:

class C
{
private:
	int x;
 public:
	C(int x){this->x = x;}
	int getX(){return x;}
};
void main()
{
	const C c(5);
	cout<<c.getX();
	system("pause");
}

第一种修改方案:

#include<iostream>

using namespace std;

class C
{
private:
	int x;
public:
	C(int x){this->x = x;}
	int getX() const {return x;}   //因此将成员函数声明为const型即可。
};
void main()
{
	const C c(5);
	cout<<c.getX();   //如果一个对象被声明为常对象,则不能调用该对象的非const型的成员函数,这是为了防止这些函数会修改常对象中数据成员得值。
	system("pause");
}
修改方案已在程序中给出。
注意:const 的位置在函数名和括号后。

第二种修改方案:

#include<iostream>

using namespace std;

class C
{
private:
	int x;
public:
	C(int x){this->x = x;}
	int getX() {return x;}   
};
void main()
{
	C c(5);          //因为const常对象原则上不能调用该对象的非const型的成员函数,因此把const去掉即可。
	cout<<c.getX();  
	system("pause");
}

修改方案已在程序中给出。


我更倾向于第一种修改方案,因为第一种修改方案可以对共用数据进行有效保护,虽然书写上有点麻烦,但是它有效避免了我们无意中修改数据的情况,在今后的工程中它有效避免了一个小数据的错误改动带来的巨大损失!


0
0

  相关文章推荐
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:507966次
    • 积分:8357
    • 等级:
    • 排名:第2521名
    • 原创:265篇
    • 转载:4篇
    • 译文:0篇
    • 评论:102条
    我的链接
    最新评论