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对象调用。
经验积累:由目标确定行动方案!
相关文章推荐
- 第六周实验指导--下面的程序存在编译错误,请给出两种修改方案--说明处理此类问题的原则是什么
- 第六周实验报告任务 1 下面程序存在编译错误。有两种修改方案,更倾向于那一种?为什么?
- 一、 找出函数中存在的问题。以下题目均在Lab05项目中完成。2、 找出项目中存在的缺陷,并给出解决的方案(至少3个,不包含下面那个举例)。 说明:这里所说的缺陷不一定都是错误,而是明显需要改进的地方。 如:不可以无限输入密码,容易被暴力破解,存在安全隐患。
- 6-1 修改程序错误,两种修改方案
- 在Eclipse下编译C++程序出现的Launch failed.Binary not found.问题的解决方法
- C++编译全攻略-编译器处理及LNK错误的解决方法(ZZ)
- 说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误信息: 无法识别的属性“type”。
- 关于 Java源文件带有package的普通程序和Applet编译和运行时错误的处理方法
- 就是在设计界面可以看到的最下面的那个说明 因为我需要在程序中告诉用户这个字段是干什么的
- 遭遇:“说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。”错误
- 本文给出了一种方便实用的解决大文件的读取、存储等处理的方法,并结合相关程序代码对具体的实现过程进行了介绍
- 什么是文件的安全性问题,如何实现对文件的保护,试列举一种实现方案并加以说明?
- WCF问题:“HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理”解决方法
- 安装MYSQL遇到的问题后来无意发现是卸载的时候没有卸载完全导致,下面给出完整的卸载MySQL 5.1的卸载方法: 1、控制面板里的增加删除程序内进行删除 2、删除MySQL文件夹下的
- 关于 Java源文件带有package的普通程序和Applet编译和运行时错误的处理方法
- 怎样编写一个程序,把一个有序整数数组放到二叉树中? 编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
- 第六周任务一 修改编译错误
- 安卓开发中,在低版本SDK使用高版本的API会报错。一般处理方法是换一种实现方法,或者在高版本SDK中使用高版本API,低版本SDK中使用效果可能会差点的折衷方案;后者可以用如下技巧来实现。
- [C/C++] VC2012编译的程序在WinXP下报告“指定的可执行文件不是有效的 Win32 应用程序”错误
- C++ 在库中处理错误的一种方法