Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2017, 22:34   #1
PickaBuu
Пользователь
 
Регистрация: 25.05.2017
Сообщений: 16
Печаль Классы C++ Перегрузка операторов. Можно ли операцию(+, -, *) сделать членом класса?

Код:
class Complex
{
	double mod, arg;
	void mis()
	{
		if (arg > 360)
			arg = arg - 360;
	};
public:
	Complex() { mod = 0; arg = 0; };
	Complex(double m, double a) { mod = m; arg = a; mis(); };
	Complex(double m) { mod = m; };
	void next() { arg = arg + 45.; };
	double argument() { return arg; };
	double modul() { return mod; };
	friend istream& operator >> (istream&, Complex&);
	friend ostream& operator<<(ostream&, Complex&);
	friend Complex operator+(Complex, Complex);
	friend Complex operator-(Complex, Complex);
	friend Complex operator*(Complex, Complex);
	Complex operator-() { return Complex(-mod, -arg);
	};
	friend Complex exp1(Complex);
};
complex<double> fun(complex<double> z);
Complex fun1(Complex z);

istream& operator >> (istream& p, Complex& z)
{
	char a = ',';
	p >> z.mod >> a >> z.arg;
	z.mis();
	return p;
}
ostream& operator<<(ostream& p, Complex& z)
{
	p << z.mod << ',' << z.arg;
	return p;
}
Complex operator+(Complex z1, Complex z2)
{
	Complex z(z1.mod + z2.mod, z1.arg + z2.arg);
	return z;
}
Complex operator-(Complex z1, Complex z2)
{
	Complex z(z1.mod - z2.mod, z1.arg - z2.arg);
	return z;
}

Complex operator*(Complex z1, Complex z2)
{
	Complex z(z1.mod*z2.mod, z1.arg*z2.arg);
	return z;
}

Complex exp1(Complex z)
{
	//double rI[2] = { exp(z.arg)*cos(z.mod), exp(z.arg)*sin(z.mod) };
	return Complex(exp(z.arg)*cos(z.mod), exp(z.arg)*sin(z.mod));

}
complex<double> fun(complex<double> z)
{
	//double x, y;
	complex<double> i(0, 1);
	z = 2. - 3.*i*exp(-z);
	return z;
}
Complex fun1(Complex z)
{
	Complex z1,i(0,1);
	z1 = 2. - 3.*i* exp1(-z);

	return z1;
}

void main()
{
	setlocale(LC_ALL, "rus");
	Complex z1(1, 0), step1(0, 45);
	complex<double> z2(1, 0), step2(0,45);
	cout << "\t\tТаблица значений:" << endl;
	for (; z1.argument() <= 360 && z2.imag() <= 360; z1 = z1 + step1, z2 = z2 + step2)
	{
		if (z1.argument() != 90 && z1.argument() != 270 && z2.imag() != 90 && z2.imag() != 270)
			cout << setw(6) << z1 << "\t" << setw(10) << fun1(z1) << "\t" << setw(8) << z2 << "\t" << setw(12) <<fun(z2) << endl;
	}

	cout << endl << "Введите значение переменной разрабатываемого класса:";
	cin >> z1;
	cout << endl << "Введите значение переменной для встроенного типа:";
	cin >> z2;
	char *res = new char[4];
	Complex f1 = fun1(z1);
	complex<double> f2 = fun(z2);
	if (f1.modul() == f2.real() && f1.argument() == f2.imag())
		res = "==";
	else res = "!=";
	cout << endl << endl << "Результат:" << f1 << res << f2;
		
	_getch();
}
Вопрос: Можно ли операцию(+, -, *) сделать членом класса?
Если нет, то почему?
PickaBuu вне форума Ответить с цитированием
Старый 25.12.2017, 23:14   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Можно
waleri вне форума Ответить с цитированием
Старый 25.12.2017, 23:49   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

даже пример есть https://msdn.microsoft.com/en-us/lib....aspx#Anchor_2
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы, перегрузка операторов. Dimasanius Общие вопросы C/C++ 5 08.05.2014 02:13
C++: Классы, перегрузка операторов, дружественные функции. Lingri Помощь студентам 6 20.09.2013 21:22
Перегрузка операторов для класса revizor Помощь студентам 1 20.01.2013 17:21
Классы ны С++, перегрузка функций,операторов Shturmovik Помощь студентам 1 04.06.2009 22:58
Задача на классы, перегрузка операторов [C++] Roomper Помощь студентам 13 30.05.2009 08:36