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

Методы класса, как лучше записывать - C++

Восстановить пароль Регистрация
 
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
29.05.2013, 13:40     Методы класса, как лучше записывать #1
Кликните здесь для просмотра всего текста
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream>
 
class variantOne
{
public:
variantOne() { varOne = 0; }
variantOne(int a) { varOne = a; }
~variantOne() {  }
 
void set_var(int b) { varOne = b; }
int get_var() { return varOne; }
    
private:
int varOne;
};
 
 
class variantTwo
{
public:
variantTwo(): varTwo(0) { };
variantTwo(int a): varTwo(a) { };
~variantTwo() {  }
 
void set_var(int b)  { varTwo = b; }
int get_var() { return varTwo; }
 
private:
int varTwo;
};
 
class variantThree
{
public:
variantThree();
variantThree(int a);
~variantThree();
 
void set_var(int b);
int get_var();
 
private:
int varThree;
};
 
variantThree::variantThree()
{  }
 
variantThree::variantThree(int a)
{
varThree = a;
}
 
variantThree::~variantThree()
{  }
 
void variantThree::set_var(int b)
{ 
varThree = b; 
}
 
int variantThree::get_var()
{
return varThree;
}
 
 
int main()
{
 
variantOne aaa(1);
aaa.set_var(111);
std::cout << aaa.get_var() << "\n";
 
variantTwo bbb(2);
bbb.set_var(222);
std::cout << bbb.get_var() << "\n";
 
variantThree ccc(3);
ccc.set_var(333);
std::cout << ccc.get_var() << "\n";
 
system("pause");
return 0;
}


Несколько вопросов:

тут 3 класса, variantOne, variantTwo, variantThree, все они делают одно и тоже, но их методы расписаны по разному, какой лучше?
какой общепринятый?
они все равнозначны или какой то чем то выгодно отличается, в плане работы, быстродействия?

лично мне больше всего нравится 1-й вариант, как говорится все делается не отходя от кассы, в отличии от 3-го.

И еще строчку 25 у меня не получается записать так, как конструктор выше - void set_var(int b): varTwo(b) { }
Это потому что конструктор, это конструктор, а функция-член это функция-член и она в таком виде не записывается?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2013, 13:40     Методы класса, как лучше записывать
Посмотрите здесь:

Как скомпилировать два класса, которые используют методы друг друга C++
Методы класса как callback функции C++
C++ Методы вызываются через указатель на объект класса; Как компилятор определяет, какой из методов надо вызвать?
C++ Можно ли записывать объекты класса string в память, чтоб потом их прочитать?
C++ как лучше сделать хранение ссылок на экземпляры класса?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
29.05.2013, 13:49     Методы класса, как лучше записывать #2
C++
1
2
variantThree::variantThree(int a):varThree(a){
}
И в конструкторе по умолчанию нет инициализации этой переменной.

Добавлено через 1 минуту
Цитата Сообщение от VLK Посмотреть сообщение
лично мне больше всего нравится 1-й вариант
Если определение функции написано в объявлении класса, то это inline функция.

Так же лучше отделять реализацию от объявления
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
29.05.2013, 13:52  [ТС]     Методы класса, как лучше записывать #3
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
variantThree::variantThree(int a):varThree(a){
}
И в конструкторе по умолчанию нет инициализации этой переменной.
Ну да, я поленился записать еще в таком варианте, по этому лучше 1 или 2 или 3 или 1-2 или 2-3?

если вы конечно про это.

PS краткость - сестра таланта, не всегда приносит пользу, по этому если бы вы расписали более понятно, было бы лучше, я был бы благодарен.

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Так же лучше отделять реализацию от объявления
т.е. по быстродействию лучше 3-й вариант (ну и вместе с ним 2-3) ?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
29.05.2013, 13:57     Методы класса, как лучше записывать #4
Цитата Сообщение от VLK Посмотреть сообщение
т.е. по быстродействию лучше 3-й вариант
Тут скорее вопрос организации программы, а не быстродействия.
Отделение определений от объявлений приносит свои плоды. Например, возможно вынести реализации в cpp фаил и использовать преимущества раздельной компиляции. Можно скомпилировать как статическую библиотеку, тем самым оградив клиентов от реализации, предоставив чистый заголовочный файл.
Так же можно делать сложную взаимосвязь классов.
Yandex
Объявления
29.05.2013, 13:57     Методы класса, как лучше записывать
Ответ Создать тему
Опции темы

Текущее время: 23:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru