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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2016, 21:10   #1
YRELIS
Пользователь
 
Регистрация: 10.07.2015
Сообщений: 14
Вопрос Классы перегрузка операций !=

Доброго времени суток.
Помогите разобраться, что я не так пишу?
По задаче мне нужно перегрузить оператор != (работа со строками)
На консоль не чего не выводит...
Или скиньте в тему какой нибудь пример с перегрузкой !=, конструктором и диструкторам.
вот код:
Код:
#include <iostream>
#include <conio.h>
#include <clocale>
#define n 10
using namespace std;

class stroki
{
private:
	char st1[n], st2[n];
public:

	stroki(char st1[n], char st2[n])
	{
		for (int i = 0; i < n; i++)  st1[i] = '\0';
		for (int i = 0; i < n; i++)  st2[i] = '\0';
		st1[n];
		st2[n];
	}
	void sets(char st1[n], char st2[n]);
	void operator != (char*);
	void getS(char st1[n], char st2[n]);
	~stroki()
	{
		for (int i = 0; i < n; i++)  st1[i] = '\0';
		for (int i = 0; i < n; i++)  st2[i] = '\0';
		cout << "Тут сработал деструктор" << endl;
	}
};
void stroki::sets(char st1[n], char st2[n])
{
	cout << "Введите s1: ";
	cin >> st1;
	cout << "Введите s2: ";
	cin >> st2;
}
void stroki :: operator !=(char* s)
{
	(strcmp(st1, st2) == 0);
}
void stroki::getS(char st1[n], char st2[n])
{
	if (st1 != st2)
	{
		cout << "Эти строки не равны." << endl;
	}
	else
	{
		cout << "Эти строки равны" << endl;
	}
}
int main()
{
	stroki;
	char st1[n], st2[n];
	setlocale(LC_ALL, "Russian");
	stroki sets(st1, st2);
	stroki getS(st1, st2);
	return 0;
}
YRELIS вне форума Ответить с цитированием
Старый 25.12.2016, 22:23   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

Выкидывайте этот бред, пока препод не видел.
1. Вы реализуете класс строки - значит он уже хранит в себе строку - выкидываем из мейна чары, выкидываем из класса один из массивов, выкидываем параметры
2. Включите отладчик и ради интереса посмотрите, что происходит с массивами внутри класса при выходе из sets
3. В гетсе вы сравниваете "указатели" st1, st2... вы то переопределяли оператор для своего типа, а не для чар
4.
Код:
stroki sets(st1, st2);
	stroki getS(st1, st2);
Это не вызов ваших функций, еще раз прочитайте начало главы о классах и объектах.
5.
Код:
		st1[n];
		st2[n];
Что вы этим хотели добиться? Чтобы ваша прога упала?
p51x вне форума Ответить с цитированием
Старый 25.12.2016, 22:46   #3
YRELIS
Пользователь
 
Регистрация: 10.07.2015
Сообщений: 14
По умолчанию

Спасибо за ответ p51x, последую вашему совету, и ещё раз перечитаю методу о классах!
YRELIS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операций. bobbyserf C# (си шарп) 5 20.04.2015 22:22
C++ Классы. Перегрузка операций. AlyaU Помощь студентам 3 07.10.2014 18:09
ПЕРЕГРУЗКА ОПЕРАЦИЙ maka42rus Помощь студентам 2 11.11.2013 08:52
Перегрузка операций Ивочка Помощь студентам 0 01.05.2013 16:36
C++, классы, перегрузка операций, матрицы Anonimius Помощь студентам 6 21.10.2011 16:53