2015-04-13 3 views
-1

Я относительно новый для OO C++:C++ различных методов получения класса

Как это добытчик:

class A { 
    B b; 
public: 
    B const &getB() const { 
    return b; 
    } 
}; 

отличается от этого?

class A { 
    B b; 
public: 
    const B &getB() const { 
    return b; 
    } 
}; 

и этот?

class A { 
    B b; 
public: 
    const B &getB() { 
    return b; 
    } 
}; 

И какой из них является правильным?

Редактировать Этот вопрос имеет ответ здесь: Посмотрите на «последовательное сопз» в http://isocpp.org/wiki/faq/const-correctness#overview-const

+1

1 и 2 означают то же самое, и оба являются правильными. 3 не является технически некорректным, однако, поскольку 'getB()' не модифицирует экземпляр 'A', имеет смысл для функции быть' const', что позволяет ей вызываться на экземплярах объекта 'const A' (или ссылки и т. д.) – Chad

+0

спасибо за ваши комментарии, но я думаю, что у этого вопроса был ответ – lmiguelmh

ответ

2

по ключевому слову const применяется на то, что стоит перед ним (слева от него), или, если нет ничего перед ним, его относится к тому, что стоит за ним (справа от него). Ваши 3 случая правильны в их использовании.

Вы можете обратиться к этой замечательной статье, чтобы узнать больше о сопзЬ корректности: http://www.cprogramming.com/tutorial/const_correctness.html

+0

спасибо, но я не видел, чтобы у него был ответ – lmiguelmh

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