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

Свойства класов - зачем помещать свойство в приват - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Error C2668: sqrt: неоднозначный вызов перегруженной функции http://www.cyberforum.ru/cpp-beginners/thread536026.html
Что не так? Ma= sqrt ((2*b^2 + 2 * c^2 - a^2)/4); Mb= sqrt ((2*a^2 + 2 * c^2 - b^2)/4); Mc= sqrt ((2*a^2 + 2 * b^2 - b^c)/4); 1>------ Построение начато: проект: dz, Конфигурация: Debug Win32 ------ 1> dz.cpp 1>c:\users\михаил\documents\visual studio 2010\projects\dz\dz\dz.cpp(16): error C2668: sqrt: неоднозначный вызов перегруженной функции
C++ Найти среднее арифметическое елементов каждого из непарных столбцов матрицы Размерность матрицы вводить самому http://www.cyberforum.ru/cpp-beginners/thread536016.html
istream_iterator C++
Добрый день, уважаемые форумчане! Прошу ответить на следующий вопрос - почему, когда создается istream_iterator пустым конструктором (например, в алгоритме copy для указания конца потока/файла), то вызывается конструктор объекта того класса, который мы передаем в качестве шаблонного аргумента?? Т.е., почему он вообще вызывается? Пример: .... class Test { public: Test() { cout <<...
Вложенные циклы. Вычисление двойной суммы. C++
#include<stdlib.h> #include<stdio.h> #include<math.h> long factor(int k) {long res; if((k==1)||(k==0)) res=1; else res=factor(k-1)*k; return res; }
C++ Как сделать выход из программы при условии выполнения предписания? http://www.cyberforum.ru/cpp-beginners/thread535999.html
Смысл кода: вводим столь-ко то значений и находим из них максимальное. Как сделать так, чтоб, когда вводимое значение было равно "-1", то программа завершалась? #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; int main() { setlocale(LC_CTYPE, "Russian");
C++ Скопировать строку в переменную Здравствуйте, программа читает txt файл, в нем есть несколько строк, я хочу записать содержимое 2(для примера) строки в переменную. Меня направили почитать об std::string и std::getline, там не нашел ответа, хотя может быть что-то упустил(с английским не очень хорошо). В google нашел вариант с использованием boost::spirit, но он очень тяжелый для новичка. На чем я остановился: main.cpp... подробнее

Показать сообщение отдельно
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.04.2012, 13:23     Свойства класов - зачем помещать свойство в приват
Цитата Сообщение от silent_1991 Посмотреть сообщение
Kuzia domovenok, ну, если не учитывать, что мои геттеры/сеттеры так не выглядят, потому что список инициализации можно использовать только в конструкторе, то довольно редко. Потому что у меня классы обычно представляют поведение, а не данные, как и должно быть. Сами классы могут пользоваться несколько более высокоуровневыми данными, чем сырые данные стандартных типов, но такие данные я оборачиваю в структуры, описанные внутри классов, в приватной области. Если класс состоит из одних данных и методов доступа, т.е. представляет данные, то надо пересмотреть надобность использования класса.
Да, да, понял, лоханулся с инициализацией. Признаю это. И так же признал бы необходимость в сокрытии всех полей классов, если бы увидел аргументы в пользу сокрытия.
Но пока что всё, к чему вы пришли это "для отладки". Я, как новичок, считаю, что лучше всего учиться на примерах. Но все примеры, которые я видел меня пока не убеждают. Ну, вот хотя бы этот ваш "контроль диапазона присваемого". Ну скажите, зачем мне ограничивать диапазон в классе Vector3D??? Что вообще может быть в сеттере вектора, кроме x=tx;y=ty... ? Прочитайте первый пост! Речь же шла именно о таких ситуациях, когда нечего написать в сеттере, кроме сеттинга!
Или вот обругали тут этот класс за говнокод. Ну и что, но он же работает? В этом то и основной вопрос ТС. Зачем ораничиать самого себя в доступе (себя, а не мифических "других пользователей", которых во многих программах, особенно учебных и не существует).
И не надо тут давить авторитетом "публикаций". ТС привёл конкретный пример геттера/сеттера, которые ничего не делают. Что мешает вместо этого сделать поле публичным? Покажите публикацию, которая требовала бы создавать такие пустые гетсеттеры.
И опять заводите речь о "больших и сложных программах". Но как показывает практика, немалая часть программистов пихают прайват поля даже в простые программы. Или вы даже разрабатывая "Тетрис" завернёте все данные в приватные поля классов?
- operator [] не работоспособен. Ты удивишься, но выравнивание на 4 байта уже стало большой редкостью. Данный метод в двух случаях из трёх вернёт мусор.
ОК, принимается. В двух случаях из трёх я с тобой соглашусь.
- Методы cross, dot должны быть константными.
Ты всегда объявляешь константным любой метод, который не изменяет поля? Вообще, в чём суть объявления метода константным? Чтобы он мог вызываться у констант?
- Большинство методов должны быть функциями в пространстве имён этого класса
Ну так продолжай мысль, где проходит грань при выборе сделать функцию методом класса или другом или в пространстве имён?
- конструктор копирования не делает ничего, чего бы не сделал генеренный компилятором, не нужен
Согласен, некоторые "сетгеттеры" не нужны по этой же причине.
 
Текущее время: 18:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru