class A{
public:
static const int arr[];
};
const int A::arr[] = {0,1,2,3,4};
пятница, 8 апреля 2011 г.
55. Как объявить в классе и проинициализировать статический константный массив?
Как и другие статические константы
54. Для чего нужны статические поля в классе? Как они определяются?
Обычно, каждому объекту соответствуют собственные значения всех его полей. Также к полям класса относят статические поля (static data members, static class fields, class variables) — поля, общие для всех объектов класса.wiki
Статические поля семантически не отличаются от обычных глобальных переменных, но они доступны только по квалифицированному имени (то есть с указанием имени класса), и поэтому, в отличие от глобальных переменных, не загромождают пространство глобальных имён.
class A{
public:
static int i;
}
/* Обязательно нужно проинициализировать */
int A::i = 0;
int main(){
A::i = 1;
}
суббота, 2 апреля 2011 г.
53. Сколько операндов имеет операция индексирования []? Какой вид результата должна возвращать эта операция?
a. Ровно один операнд (параметр).
б. С точки зрения компилятора ничего она не должна и может возвращать что угодно. Или вообще не возвращать. Однако, я бы обиделся на std::vector, если бы не смог присваивать значения таким образом:
Поэтому, крайне желательно возвращать некоторое lvalue по ссылке, например:
б. С точки зрения компилятора ничего она не должна и может возвращать что угодно. Или вообще не возвращать. Однако, я бы обиделся на std::vector, если бы не смог присваивать значения таким образом:
std::vector a(10);
a[3] = 42;
Поэтому, крайне желательно возвращать некоторое lvalue по ссылке, например:
double& operator[](int i){return _lvalue_;}
Подписаться на:
Сообщения (Atom)