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

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


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




                    

【操作系统】任务调度方法

上次碰到js函数调度的问题,因为那时候不知道有event loop的概念……以为js中的函数也是抢占式的调用,然后又想起来上学期ucos中怪的碰撞检测有问题的情况……所以翻了下操作系统的书……然而之前...
  • natsuyu
  • natsuyu
  • 2016年07月18日 15:04
  • 1322

重构之22种代码的坏味道

概述: 在编写代码时,随着代码量的增加,会时不时的需要重构来提高代码的质量。以下是22中代码的坏味道,如果你的代码中也有这些,那快快来按照这些方法重构你的代码吧! 1.Duplicated Cod...
  • Andy_93
  • Andy_93
  • 2016年11月22日 17:01
  • 616

有两种实现多线程的方式以及两种方式之间的区别

Java中有两种实现多线程的方式。一是直接继承Thread类,二是实现Runnable接口。那么这两种实现多线程的方式在应用上有什么区别呢?          为了回答这个问题,我们可以通过编写...
  • u013449800
  • u013449800
  • 2014年08月22日 18:40
  • 3929

3.spring Boot 定时任务升级篇(动态添加修改删除定时任务)

【本篇博客,有配套视频,视频地址:《http://www.youku.com/index/y404》,公众号中点击下面的阅读原文,视频中讲解的更详细】     需求缘起:在发布了《Spring ...
  • fujiawei3710
  • fujiawei3710
  • 2017年12月26日 18:52
  • 98

Java多线程之创建任务和线程

Runnable创建线程任务就是对象。为了创建任务,必须首先为任务定义一个类。任务类必须实现Runnable接口。Runnable接口非常简单,它只包含一个run方法。需要实现这个方法来告诉系统线程将...
  • yongchaocsdn
  • yongchaocsdn
  • 2016年12月14日 17:19
  • 308

编译原理结构框架9运行时的存储组织

第9章 运行时的存储组织   重点:符号表的内容、组织,过程调用实现,                 静态存储分配、动态存储分配的基本方法。 难点:参数传递,过程说明语句代码结构, ...
  • hit_rxz
  • hit_rxz
  • 2014年12月03日 21:18
  • 543

南邮 OJ 1270 任务时间表问题

任务时间表问题 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 21            测试通过 : ...
  • changshu1
  • changshu1
  • 2015年08月05日 14:13
  • 344

SAP ABAP 已经释放的TR(或者任务),修改还原TR(任务),删除已释放的TR(任务)

有时候我们会遇到将某个TR下面的任务task释放了,然后又想再修改,或者不想传输那个TR。 或者想删除一个已经释放的TR. 后面研究发现,TR(任务)相应的数据存放到数据库表汇:E070(更改 &...
  • forever_crazy
  • forever_crazy
  • 2014年08月27日 10:32
  • 3520

μCOS-II系统之事件(event)的使用规则及Semaphore实例

在实时多任务系统中,信号量被广泛用于:任务间对共享资源的互斥、任务和中断服务程序之间的同步、任务之间的同步。...
  • wavemcu
  • wavemcu
  • 2014年05月31日 10:30
  • 1805

【深度学习Caffe】Windows编译caffe的几个问题

1.CommonSettings设置 cuda版本要填相应的,cudnn复制到cuda的路径下,其他的就不用修改了。 下面这个cuda框架要查你的gpu计算能力,按照对应的填,比如750ti是50,G...
  • dzkd1768
  • dzkd1768
  • 2017年04月05日 15:56
  • 1549
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++第六周任务一【任务1】下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,在报告中说明你倾向于用哪一种?为什么?处理此类问题的原则是什么?
举报原因:
原因补充:

(最多只允许输入30个字)