栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++学校oj题目分析

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++学校oj题目分析

代码:

#define  _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
using namespace std;

class Complex
{
public:
	double r; // real
	double i; // image
public:
	Complex() :r(0), i(0) {}
	Complex(double a, double b) :r(a), i(b) {}
	void Show() const
	{
		cout << "(" << noshowpos << r << showpos << i << noshowpos << "i)" << endl;
	}

	Complex(Complex& d1)
	{
		r = d1.r * 2;
		i = d1.i * 2;
	}

	Complex operator=(const Complex& d1)
	{
		r = 3 * d1.r;
		i = 3 * d1.i;
		return *this;
	}
};

int main()
{
	double a, b;
	cin >> a >> b;

	Complex c1(a, b);
	Complex c3 = c1;
	Complex c4, c5;
	c5 = c4 = c1;
	const Complex& c6 = c4 = c1;

 	c1.Show();
	c3.Show();
	c4.Show();
	c5.Show();
	c6.Show();

	return 0;
}

1、为什么赋值运算符重载必须加const,否则编译器报错

因为c1赋值的c4的时候会创建一份临时变量,而c5则被这个临时变量赋值,因为是个临时变量,所以是const的,如果赋值运算符参数不加const,则const传给非const参数,权限扩大,就会发生报错

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/854202.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号