Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Блондинка_)
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 23
#1

Использование классов - C++

26.01.2011, 12:55. Просмотров 2112. Ответов 27
Метки нет (Все метки)

Класс Члены класса Методы Операторы перегрузки Исходные данные
Матрица Размерность Конструктор, Сложение (+), A=(5 1 7
матрицы, деструктор, вычитание (-), 10 -2 1
элементы метод вывода умножение (*) 2-х 0 1 2)
матрицы матрицы, матриц, умножение
метод вычисления матрицы на число (*=) B= (2 4 1
определителя 2 1 0
матрицы 7 2 1)



Результаты
С=2(A–B)(A2 + B)
Найти |C|
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2011, 12:55     Использование классов
Посмотрите здесь:

Использование классов - C++
Здравствуйте господа программисты. Помогите мне пожалуста. В Курсовой есть такое задание: "Создать телефонную книгу" Программный проект...

Использование классов - C++
Расскажите пожалуйста на кокретных примерах как и где модно использовать классы?

Использование классов - C++
Составить программу для объявления и использования данных типа класс согласно индивидуальному заданию, Базовый (транспортное средство) ...

Использование классов - C++
Разработать заголовочный файл, содержащий описание соответствующего класса, функции и операторы. Описание функций-членов класса разместить...

Использование классов - C++
Не хочет запускаться, помогите найти ошибку #include <iostream> #define N 5 using namespace std; class electronic_store { ...

Совместное использование классов - C++
Здравствуйте, возник такой вопрос, как следует писать код, чтобы 2 не зависимых класса могли использовать друг друга? Вот к примеру код ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.01.2011, 14:02     Использование классов #21
Цитата Сообщение от silent_1991 Посмотреть сообщение
taras atavin, странное задание... Как так, оператор [] возвращает объект класса, но этот объект не должен иметь метода ресайз, а сам класс должен... Очень странно. Я понимаю так: либо класс имеет публичный метод, либо он его не имеет.
Оно так. Но ведь можно иметь два класса. Не знаю, может предок с потомком, но по оператору должна возвращаться не совсем такая строка, как декларируется в качестве самостоятельного объекта. То есть, "строка" и "строка матрицы" - должно быть не одно и тоже. Но при этом надо в обе стороны поддерживать присваивание. Какой класс лучше от какого наследовать? И можно ли вообще в наследнике отключить метод предка? Не перенести в привэйт, а полностью исключить его из класса.

Добавлено через 6 минут
И если оператор возвращает объект, можно ли класс этого объекта объявить в привэйте? То есть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Matix
{
 private:
 Row *data;
 unsigned int cols;
 unsigned int rows;
 class RowOfMatrix
 {
   ....
 }
 public:
 RowOfMatrix & operator [](int index)
 {
  return (RowOfMatrix)(data[index]);
 }
 ...
};
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
26.01.2011, 14:26     Использование классов #22
Логично было бы, конечно, наследовать класс RowOfMatrix от Row, ведь строка матрицы - это частный случай строки.
На счёт исключить - не знаю, честно говоря. Может действительно в приват его запихнуть и без реализации оставить.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.01.2011, 06:41     Использование классов #23
Цитата Сообщение от silent_1991 Посмотреть сообщение
Может действительно в приват его запихнуть и без реализации оставить.
А для этого метод предка обязательно должен быть виртуальным? И если в предке уже есть
C++
1
2
3
4
Row & Row::opeartor = (Row &x)
{
 ...
}
, то это уже гарантирует работу данного оператора с правым операндом, тип которого - потомок? И надо ли указывать в предке, что этот оператор виртуальный, чтоб перекрыть его в потомке (в предке при несовпадении размеров надо менять размер левого операнда, а в потомке в той же ситуации бросать исключение)?

Добавлено через 1 минуту
И если оператор возвращает объект, можно ли класс этого объекта объявить в привэйте? То есть допустимо ли
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Matix
{
 private:
 Row *data;
 unsigned int cols;
 unsigned int rows;
 class RowOfMatrix
 {
   ....
 }
 public:
 RowOfMatrix & operator [](int index)
 {
  return (RowOfMatrix)(data[index]);
 }
 ...
};
?
Сабина Сафронов
0 / 0 / 0
Регистрация: 22.12.2010
Сообщений: 6
27.01.2011, 07:00     Использование классов #24
Кристофер, что-то я тут ничего не могу понять что тебе тут написали, это 3 варианта решения одной задачи?
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.01.2011, 08:49     Использование классов #25
taras atavin, нет, по-моему виртуальным быть не обязан. Просто вы объявляете его в предке в паблике, а в потомке скрываете его в привате.
На счёт объявления класса в привате - не уверен, лучше объявите его за пределами и сделайте композицию. А с другой стороны, почему бы вам не проверить это?)))
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.01.2011, 09:04     Использование классов #26
Цитата Сообщение от silent_1991 Посмотреть сообщение
делайте композицию.
А что это такое?
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.01.2011, 09:17     Использование классов #27
Это когда элементами одного класса являются экземпляры другого. Но я уже понял, что вам тут не композиция нужна, а нужно просто, чтобы метод одного класса возвращал экземпляр другого. Просто не мучайтесь и объявите этот класс отдельно, а не внутри другого класса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2011, 09:23     Использование классов
Еще ссылки по теме:

Использование классов (sha1) - C++
В sha1.h /* sha1.h */ #ifndef SHA1_H #define SHA1_H #include <stdint.h> #ifdef __cplusplus extern "C" { ...

Создание и использование классов - C++
Доброго все здравия, попытался сам написать класс, отрицательный результат ниже. #include "stdafx.h" #include <iostream> using...

Создание и использование классов - C++
Здравствуйте програмисты. Помогите пожалуйста. В лабораторке есть задание: Организовать класс треугольник, определенный по длинам трех...

Использование наследования классов - C++
День добрый, форум! Вот такой вопрос: Есть родительский класс A, у него 2 потомка, B и C. Внутри другого класса F я создаю объект...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.01.2011, 09:23     Использование классов #28
А смысл его снаружи объявлять? В результате же можно будет вне Matrix создавать объекты класса RowOfMatrix. Я же хотел ещё запретить создавать вне Matrix даже указатели на RowOfMatrix. Хотя, это уже не обязательно.

Добавлено через 3 минуты
Цитата Сообщение от silent_1991 Посмотреть сообщение
Это когда элементами одного класса являются экземпляры другого.
Понятно. В принципе, с таким подходом я знаком, даже использовал чаще наследования, но для других задач и самого слова не знал. И в данном случае, композиция тоже имеет место:
C++
1
2
3
4
5
class Matrix
{
 private:
  Row *data;
 ...
Yandex
Объявления
27.01.2011, 09:23     Использование классов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru