Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
#1

Имеет ли смысл использовать класс так? - C++

11.07.2013, 13:19. Просмотров 841. Ответов 20
Метки нет (Все метки)

Здравствуйте. Недавно увидел код, вот упрощенный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class someClass
{
    public:
        static bool someFn( int, int );
        static void foo( int* );
        
        //ГҐГ№ГҐ ГЇГ*ðó Г±ГІГ*ГІГЁГЄ ГґГіГ*êöèé...
};
 
//ðåГ*ëèçГ*öèÿ ГґГіГ*êöèé Г*ГҐ ГўГ*Г¦Г*Г* 
 
int main() {
    bool f = someClass::someFn( 5, 6 );
    int p = 8; 
    someClass::foo( &p );
    
    return 0;
}
Так вот вопрос: имеет ли смысл делать такой класс, если он не содержит никаких полей для обработки функциями.
Не проще все в неймспейс запихнуть и пользоваться как просто функциями?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2013, 13:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Имеет ли смысл использовать класс так? (C++):

Имеет ли смысл писать makefile? - C++
Всем доброго дня, вообщем сабж, сейчас для само развития занимаюсь написанием 3д движка на опенгл, дело идет потихоньку, и вот задался...

Имеет ли смысл писать конспект по изучаемому материалу - C++
Всем привет! Начал где то месяца 2 назад изучать с++ , разумеется начал с книг, так как по видео считаю , что эффективно обучаться языку...

Имеет ли смысл учить архитектуру ЭВМ программисту? - C++
Имеет ли смысл учить архитектуру ЭВМ и ОС для изучения программирования ? Если нужно , то дайте ссылки на информацию и обучение для...

Имеет ли смысл продолжать учить с++ или попробовать перейти в с# или java? - C++
Надеюсь данный вопрос не нарушает правила этого раздела. Учу кресты уже месяца полтора-два. Это мой первый ЯП. По 2-7 часов в день. В...

Смысл const char* и о том, какой тип строк лучше использовать - C++
Я никак не могу понять смысла const char*. Это строка в стиле C, я знаю. Но чем эта запись отличается от char*? Или вообще, просто char?...

Класс, для полей которого нужно использовать класс - C++
Нужно помочь с этой частью, ну и проблемка - char для ФИО не переваривает пробелы. #include "stdafx.h" #include <conio.h> ...

20
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,126
11.07.2013, 13:22 #2
Цитата Сообщение от anubis1768 Посмотреть сообщение
Не проще все в неймспейс запихнуть и пользоваться как просто функциями?
Проще, нормальный вариант.
1
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,033
11.07.2013, 13:22 #3
Полное несоответсвие концепций ООП
1
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
11.07.2013, 13:27  [ТС] #4
0x10, Игорь с++, спасибо, я поначалу тоже удивился такому странному использованию, подумал, что тут какая то специальная фича, а оказывается просто быдлокод...
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
11.07.2013, 13:29 #5
Цитата Сообщение от anubis1768 Посмотреть сообщение
Не проще все в неймспейс запихнуть и пользоваться как просто функциями?
А если нужны будут приватные данные?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
11.07.2013, 13:31 #6
Цитата Сообщение от anubis1768 Посмотреть сообщение
Не проще все в неймспейс запихнуть и пользоваться как просто функциями?
А если нужно будет использовать специализацию?
0
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,126
11.07.2013, 13:31 #7
Croessmah, если нужны будут, тогда и появится повод для класса. В посте говорится только о куче статик-методов.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
11.07.2013, 13:33 #8
Цитата Сообщение от 0x10 Посмотреть сообщение
Croessmah, если нужны будут, тогда и появится повод для класса.
И смысл то и дело всё переделывать?
0
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
11.07.2013, 13:36  [ТС] #9
Croessmah, из namespace в класс не очень сложно переделать. Нет, конечно будет немножко геморно, но можно подумать и обойтись без класса. Тем более, здесь такой класс, что вряд ли какие то данные ему потребуются.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
11.07.2013, 13:52 #10
Пространства имен нужны для разрешения конфликтов имен, тогда как структуры необходимы для объединения чего-то общего

Добавлено через 3 минуты
Такой пример убедительнее выглядит?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
 
 
namespace MyNamespace{
    int bar(int x);
    int foo(int x){
        if(x>0)
            return 1+bar(x);
        return 0;
    }
    int bar(int x){
        return 1+foo(x-1);
    }
}
 
 
 
struct MyStruct{
    static int foo(int x){
        if(x>0)
            return 1+bar(x);
        return 0;
    }
    static int bar(int x){
        return 1+foo(x-1);
    }
};
 
 
 
template<typename T>
int MyFoo(const T & obj){
    return obj.foo(10);
}
 
 
int main () {
    std::cout<<MyNamespace::foo(60)<<std::endl;
    std::cout<<MyStruct::foo(60)<<std::endl;
    std::cout<<MyFoo(MyStruct())<<std::endl;
    //std::cout<<MyFoo(???)<<std::endl;//А как с namespace?
    return 0;
}
1
Programmer c
5 / 0 / 2
Регистрация: 06.07.2013
Сообщений: 59
11.07.2013, 13:53 #11
Цитата Сообщение от anubis1768 Посмотреть сообщение
Здравствуйте. Недавно увидел код, вот упрощенный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class someClass
{
    public:
        static bool someFn( int, int );
        static void foo( int* );
        
        //ГҐГ№ГҐ ГЇГ*ðó Г±ГІГ*ГІГЁГЄ ГґГіГ*êöèé...
};
 
//ðåГ*ëèçГ*öèÿ ГґГіГ*êöèé Г*ГҐ ГўГ*Г¦Г*Г* 
 
int main() {
    bool f = someClass::someFn( 5, 6 );
    int p = 8; 
    someClass::foo( &p );
    
    return 0;
}
Так вот вопрос: имеет ли смысл делать такой класс, если он не содержит никаких полей для обработки функциями.
Не проще все в неймспейс запихнуть и пользоваться как просто функциями?
Полное не соответсвие ООП
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
11.07.2013, 13:54 #12
Цитата Сообщение от Programmer c Посмотреть сообщение
Полное не соответсвие ООП
Классы применяются не только для ООП, особенно в связке с шаблонами!
Тем более, что тут нет речи о объектах данного класса, тогда где ООП вообще?
0
Programmer c
5 / 0 / 2
Регистрация: 06.07.2013
Сообщений: 59
11.07.2013, 13:55 #13
Цитата Сообщение от Croessmah Посмотреть сообщение
Классы применяются не только для ООП, особенно в связке с шаблонами!
Спс, просветил меня, буду знать)
0
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
11.07.2013, 13:56  [ТС] #14
Цитата Сообщение от Croessmah Посмотреть сообщение
структуры необходимы для объединения чего-то общего
То есть объединять похожие функции в классе, в котором нету полей, и делать их статик, все-таки имеет смысл? Если да, то объясните, зачем.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
11.07.2013, 13:57 #15
Цитата Сообщение от anubis1768 Посмотреть сообщение
Если да, то объясните, зачем.
В посте #10 есть пример
0
11.07.2013, 13:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2013, 13:57
Привет! Вот еще темы с ответами:

Проинициализировать класс массивов который имеет конструктор по умолчанию - C++
Или я не знаю как правельно спрасить у гуглы,или это не возможно,кто знает как можно реализовать такое class a { int q,w,e; ...

что здесь не так? (из промежутка [n; m] вывести число, которое имеет наибольшее делителей) - C++
из промежутка вывести число, которое имеет наибольше делителей код: # include &lt;iostream&gt; # include &lt;conio.h&gt; using namespace std; ...

Создать класс Point, который имеет два закрытых члена класса (координаты) - C++
Помогите плиз код написать. Я чёт не очень понимаю в классах. Создайте класс Point, который имеет два закрытых члена класса...

Класс, каждый экземпляр которого имеет поле UID с гарантированно уникальным значением - C++
Как бы это поле реализовать? При передаче экземпляра значению любой функции, или оператору и при записи в экземпляр возвращаемого значения...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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