2011-01-24 1 views
4

У меня есть класс разоблачения статической функции в myclass.hppИспользования статического ключевого слова в C++

class MyClass { 
public: 
    static std::string dosome(); 
}; 

Ну, в myclass.cpp, что я должен написать: это:

std::string MyClass::dosome() { 
    ... 
} 

или это:

static std::string MyClass::dosome() { 
    ... 
} 

Я думаю, я не должен повторять статическое ключевое слово ... это правильно?

+0

Не повторяйте статическое ключевое слово, но мне было бы интересно узнать, почему – MattSmith

+0

@MattSmith: см. Мой ответ ниже. – sharptooth

ответ

10

C++ компилятор не допустит этого:

static std::string MyClass::dosome() { 
    ... 
} 

начиная с наличия static в определении функции означает нечто совершенно иное - static связь (то есть функция может быть вызвана только из одной и той же единице трансляции).

Имея static в объявлении функции члена, достаточно.

+0

Ах да, вы правы ... это похоже на c ... если он встречает статическую функцию, это значит, что его можно вызывать только из того же файла ... или лучше, как вы указали, единицы перевода. Спасибо за ваш экзистенциальный ответ. – Andry

5

Не повторяйте ключевое слово static. Для этого произойдет ошибка.

1

Да. Ключ static не должен использоваться при определении тела функции вне определения класса.