关闭

C++第六周任务一【任务1】下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,在报告中说明你倾向于用哪一种?为什么?处理此类问题的原则是什么?

标签: 任务c++iostreamsystemcclass
502人阅读 评论(0) 收藏 举报
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称: 修改方案                             
* 作    者:李洪悬                              
* 完成日期:   2012      年 3      月  28      日
* 版 本 号:          

* 对任务及求解方法的描述部分
* 输入描述: 
* 问题描述: 
* 程序输出: 
* 程序头部的注释结束
*/
【任务1】下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,在报告中说明你倾向于用哪一种?为什么?处理此类问题的原则是什么?
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()
	{
		return x;
	}  
};  
void main()  
{  
	 C c(5);//去掉const(即不是常对象)
	
	cout<< c.getX() << endl;   //这一行将会出现错误 
	
	system("pause");  
}
方案二:  
#include < iostream >

using namespace std;

class C
{
private:
	
	int x;
	
public: 
	
	C(int x)
	{
		this-> x = x;
	} 
	
	int getX() const//加上const成为常成员函数(能被常对象调用)
	{
		return x;
	}  
};  
void main()  
{  
	const C c(5);//定义为常对象
	
	cout<< c.getX() << endl;   //这一行将会出现错误 
	
	system("pause");  
} 
一 分析错误:常对象不能调用非const型的成员函数。
二 修改错误:
方案一:将【const C c(5);//定义为常对象】中的const去掉,能调用非const型的成员函数;
方案二:将【int getX() const//加上const成为常成员函数(能被常对象调用)】;
三 评价:当【const C c(5);//定义为常对象】时,对常对象中的数据成员构成了保护,防止对象中的数据被修改,此程序只是输出数据,
即方案二较好;同时const成员函数既可以被const对象调用也可以被非const对象调用。


经验积累:由目标确定行动方案!




   
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:210912次
    • 积分:3365
    • 等级:
    • 排名:第9988名
    • 原创:123篇
    • 转载:4篇
    • 译文:0篇
    • 评论:41条