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

static и const - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
27.09.2012, 20:56     static и const #1
static void A();

Что дает этот статик? Что он вообще дает?

int A() const;

Что дает конст в данном случае?

static int A() const;

А теперь?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2012, 20:56     static и const
Посмотрите здесь:

C++ const static vector<type>
C++ static const
char operator[](unsigned short offset) const; // что означает const? C++
C++ Что это bool operator== (const CLASS&) const;
C++ static const?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
27.09.2012, 20:58     static и const #2
Цитата Сообщение от Kgfq Посмотреть сообщение
Что дает этот статик? Что он вообще дает?
позволяет вызывать метод класса без необходимости создания самого объекта.

static int A() const;
Нет такого. Квалификатор конст здесь говорит о том, что данные класса не будут изменены (ну кроме mutable аттрибутов). НО в статические функции класса не передается указатель на класс this, менять нечего
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
27.09.2012, 21:58  [ТС]     static и const #3
Andsteadur, статик накладывает какие-то ограничения?

конст: нельзя менять только сам объект, внутри которого вызвано или все глобальные переменные тоже?
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
27.09.2012, 22:31     static и const #4
Цитата Сообщение от Kgfq Посмотреть сообщение
Andsteadur, статик накладывает какие-то ограничения?
Нельзя использовать не статические переменные/не статические функции класса.

Цитата Сообщение от Kgfq Посмотреть сообщение
нельзя менять только сам объект, внутри которого вызвано или все глобальные переменные тоже?
const будет относиться к this так что нельзя менять лишь сам объект.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
28.09.2012, 08:38     static и const #5
конст: нельзя менять только сам объект, внутри которого вызвано или все глобальные переменные тоже?
Использовать глобальные переменные внутри экземпляра класса - это код с запашком.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
28.09.2012, 08:50     static и const #6
Цитата Сообщение от Kgfq Посмотреть сообщение
static void A();
Что дает этот статик? Что он вообще дает?
Цитата Сообщение от Andsteadur Посмотреть сообщение
позволяет вызывать метод класса без необходимости создания самого объекта.
А кто сказал, что речь о классах?
У static есть еще и другие значения, например:
C++
1
2
3
4
5
6
7
//somefile.cpp
#include <iostream>
 
/*static*/ void func()
{
    std::cout << "Hello" << std::endl;
}
C++
1
2
3
4
5
6
7
8
//main.cpp
void func();
 
int main()
{
    func();
    return 0;
}
static ограничивает область видимости фукнции одним файлом. Если в первом файле его раскоментировать, то будет ошибка компиляции.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.09.2012, 08:54     static и const #7
Kastaneda, В С++ для функций не стоит юзать static однако. Анонимные namespace-ы не просто так придуманы.
Kastaneda
28.09.2012, 08:58
  #8

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
Kastaneda, В С++ для функций не стоит юзать static однако. Анонимные namespace-ы не просто так придуманы.
СтОит/не стОит это уже другой вопрос (конечно его ни кто не использует). Просто есть же еще такое предназначение static'а (и оно работает в С++), вот я и упомянул о нем

yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
28.09.2012, 14:44     static и const #9
Цитата Сообщение от ForEveR Посмотреть сообщение
В С++ для функций не стоит юзать static однако
это еще почему?
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
28.09.2012, 14:56     static и const #10
Holy standard:
Цитата Сообщение от Holy standard
The use of the static keyword is deprecated when declaring objects in a namespace scope (see annex D);
the unnamed-namespace provides a superior alternative.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
28.09.2012, 15:02     static и const #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
В новом стандарте уже не deprecated, кстати.

Но вообще по тем причинам, что у static вагон значений: влияет и на область видимости, и на время жизни, и на доступность при компоновке, и всё это в зависимости от контекста, где упоминается. Просто чтобы поменьше неоднозначностей было.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
28.09.2012, 17:50     static и const #12
Цитата Сообщение от yekka Посмотреть сообщение
это еще почему?
Не то, чтобы не стОит, просто это не C++ way, ибо
Цитата Сообщение от ForEveR Посмотреть сообщение
Анонимные namespace-ы не просто так придуманы.
Добавлено через 2 минуты
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
В новом стандарте уже не deprecated, кстати.
Убрали? Просто лень после работы в стандарт лезть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2012, 22:03     static и const
Еще ссылки по теме:

C++ int const * const foo(const int* param) const - разъясните значение квалификаторов
C++ Ошибка компиляции "forbids in-class initialization of non-const static member"
#define PI or static const float PI C++

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

Или воспользуйтесь поиском по форуму:
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.09.2012, 22:03  [ТС]     static и const #13
а в чем особенности статик переменных?
Yandex
Объявления
28.09.2012, 22:03     static и const
Ответ Создать тему
Опции темы

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