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

Можно ли к статическому объекту обратиться, как к обычному? - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 10:46     Можно ли к статическому объекту обратиться, как к обычному? #1
Можно ли к статическому объекту обратиться, как к обычному?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2011, 10:46     Можно ли к статическому объекту обратиться, как к обычному?
Посмотрите здесь:

C++ Можно обратиться к локальной переменной из другой функции?
Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту? C++
C++ как задать значение статическому элементу класса
Можно ли разбить строки на слова при strtok и обратиться к нужному слову? C++
Можно ли обратиться к перекрытой глобальной переменной? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.11.2011, 10:47     Можно ли к статическому объекту обратиться, как к обычному? #2
эт как? пример кода приведи
а лучше скорми компилятору, он тебе и скажет можно или нельзя
res
56 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
25.11.2011, 10:49     Можно ли к статическому объекту обратиться, как к обычному? #3
taras atavin, А что такое "обычные объекты"?
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.11.2011, 10:51     Можно ли к статическому объекту обратиться, как к обычному? #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class SomeClass
{
    public:
    SomeClass(){}
    static void print_static()
    {
        cout<<"static print"<<endl;
    }
    void print()
    {
        cout<<"print"<<endl;
    }
 
};
 
int main (void)
{
    SomeClass *someClass = new SomeClass();
    someClass->print_static();
    SomeClass::print_static();
    return 0;
}
так штоли?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 10:51  [ТС]     Можно ли к статическому объекту обратиться, как к обычному? #5
Кстати, как его можно определить? Метод вообще просто: "Методом называется подпрограмма-член класса". А как определить именно статический?
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.11.2011, 10:52     Можно ли к статическому объекту обратиться, как к обычному? #6
так можно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 10:55  [ТС]     Можно ли к статическому объекту обратиться, как к обычному? #7
Цитата Сообщение от oxotnik Посмотреть сообщение
а лучше скорми компилятору, он тебе и скажет можно или нельзя
C++
1
2
3
4
5
6
7
8
9
10
class TTest
{
 public:
 static void t()
 {
  
 }
};
TTest t;
t.t();
. Студия проглотила. Это нормально? И куда в этом случае передаётся this?

Добавлено через 1 минуту
Цитата Сообщение от oxotnik Посмотреть сообщение
так можно
В смысле? Каково определение именно статического метода.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.11.2011, 11:06     Можно ли к статическому объекту обратиться, как к обычному? #8
Цитата Сообщение от taras atavin Посмотреть сообщение
И куда в этом случае передаётся this?
если ты обратишься к this в теле статического метода, то компилятор сообщит тебе, что так нельзя делать (ибо this, на момент вызова статического метода может и не существовать), а в остальном это такой же метод как и другие, т.е. к нему через созданный объект класса можно обращаться
Сыроежка
Заблокирован
25.11.2011, 12:07     Можно ли к статическому объекту обратиться, как к обычному? #9
Цитата Сообщение от taras atavin Посмотреть сообщение
Можно ли к статическому объекту обратиться, как к обычному?
Внутри определения класса или его членов вы можете непосредственно обращаться к статическому объекту по имени.
Вне определения класса (но также и внутри класса) вы можете обращаться к статическому имени используя синтаксиса квалифицированного имени. Наример, X::s.
Вы твкже можете обращаться к статическому члену класса, используя синтаксис доступа к члену класса через объект класса. В этом случае выражение , задающее объект класса, вычмсляется. Например,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct X
{
   X & f() const { return ( *this ); }
   static int data;
};
 
int X::data = 10;
 
int main()
{
   X x;
   std::cout << "data = " << x.f().data << std::endl;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 12:08  [ТС]     Можно ли к статическому объекту обратиться, как к обычному? #10
То есть это метод, не имеющий информации о том, через какой именно экземпляр своего класса он вызывается? Можно использовать эту фразу в качестве определения, или для определения она слишком корявая?
Сыроежка
Заблокирован
25.11.2011, 12:09     Можно ли к статическому объекту обратиться, как к обычному? #11
taras atavin, Почитайте мой комментария. Я там все написал.

Что кассется функций, то статические функции -члены класса не имеют указатель this, они не могут виртуальными, и не могут иметь прототип, совпадающий с нестатической функцией-сленом класса.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 12:41  [ТС]     Можно ли к статическому объекту обратиться, как к обычному? #12
Ну и очепятка! Методу, а не объекту.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2011, 20:10     Можно ли к статическому объекту обратиться, как к обычному?
Еще ссылки по теме:

C++ Можно ли обратиться к 3 элементу массива ?
C++ Как обратиться к объекту bitset так, чтобы результатом была битовая маска
Можно ли присвоить объекту основного типа значение объекта пользовательского типа? C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.11.2011, 20:10     Можно ли к статическому объекту обратиться, как к обычному? #13
Цитата Сообщение от oxotnik Посмотреть сообщение
ибо this, на момент вызова статического метода может и не существовать
this не может существовать в определённый момент и не существовать в другой. this - это параметр любого не статического метода, который передаётся этому методу компилятором неявно при каждом вызове. Соответственно, в статических методах просто-напросто не определён скрытый параметр this, и потому доступа к нему нет.

Не по теме:

Возможно, я вас не так понял или вы не корректно выразились, поэтому решил прояснить.

Yandex
Объявления
25.11.2011, 20:10     Можно ли к статическому объекту обратиться, как к обычному?
Ответ Создать тему
Опции темы

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