关闭

第六周实验报告1

310人阅读 评论(0) 收藏 举报

实验目的:下面的程序存在编译错误,有两种方式可以修改,请给出这两种修改方案。

有问题的源代码:

#include <iostream>

using namespace std;

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");
}

编译错误:
error C2662: 'getx' : cannot convert 'this' pointer from 'const class C' to 'class C &'
        Conversion loses qualifiers

第一种订正方式:

#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);
	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;}
};

void main()
{
	const C c(5);
	cout << c.getx();
	system("pause");
}


个人感觉:

在定义对象时指定c为常对象,则对象c中的所有数据成员的值都不能被修改,所以如果希望保证数据成语不被改变的对象,可以声明为常对象,此时自然第二种订正方式更好。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:86376次
    • 积分:1891
    • 等级:
    • 排名:千里之外
    • 原创:110篇
    • 转载:0篇
    • 译文:0篇
    • 评论:26条
    最新评论