2010-01-08 2 views
2

вЧто использование сопзИте здесь

int salary() const { return mySalary; }

насколько я понимаю Const для этого указателя, но я не уверен. Может ли кто-нибудь сказать мне, что здесь используется const?

+0

Вы совершенно правы, это влияет на это *. –

ответ

7

Похоже, что у вас есть правильная идея, в C++ const по методу объекта означает, что метод не может изменить объект.

Например, это не будет позволено:

class Animal { 
    int _state = 0; 

    void changeState() const { 
    _state = 1; 
    } 
} 
+0

Этот синтаксис действителен только для C++ 0x – ergosys

+0

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

+0

Я мог ошибаться, я использовал MSVC++ версию 6 (годы назад), возможно, это не соответствовало спецификации, делает ли Microsoft когда-либо подобное? ;) –

0

Это const метод. Это означает, что он не будет изменять переменные-члены класса и не вызовет методы не const. Таким образом:

const foo bar; 
bar.m(); 

является законным, если m является const метод, но в противном случае не было бы.

5

Когда функция отмечена const, ее можно вызывать на указателе/​​ссылке const этого класса. По сути это говорит Эта функция не изменяет состояние класса.

0

Это означает, что функция может быть вызвана для объекта const; и внутри этой функции-члена указатель this является константой.

0

Это просто гарантирует, что вызов зарплаты() не изменит состояние объекта. IE, его можно вызвать с помощью указателя или ссылки const.

0

Константных после функции класса, значит, эта функция не будет изменять любые объекты члена этого класса. Только одно исключение, когда переменная-член отмечена Mutable.

Смежные вопросы