您的位置:首页 > 编程语言 > C语言/C++

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

2012-03-26 18:30 1491 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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对象调用。


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





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐