Поскольку переменная
Важно понимать, что в действительности использование модификатора
■ Некоторые компиляторы не генерируют встраиваемый код, если соответствующая функция содержит цикл, конструкцию
■ Чаще всего встраиваемыми не могут быть рекурсивные функции.
■ Как правило, встраивание "не проходит" для функций, которые содержат статические (static) переменные.
Узелок на память.
Существует еще один способ создания встраиваемой функции. Он состоит в определении кода для функции-члена класса в самом объявлении класса. Любая функция, которая определяется в объявлении класса, автоматически становится встраиваемой. В этом случае необязательно предварять ее объявление ключевым словом
#include
using namespace std;
class cl {
int i; // закрытый член по умолчанию
public:
// автоматически встраиваемые функции
int get_i() { return i; }
void put_i(int j) { i = j; }
};
int main()
{
s.put_i(10);
cout << s.get_i();
return 0;
}
Здесь функции
Обратите внимание на то, как выглядит код функций, определенных
class cl {
int i; // закрытый член по умолчанию
public:
// встраиваемые функции
int get_i()
{
return i;
}
void put_i(int j)
{
i = j;
}
};
В общем случае небольшие функции (как представленные в этом примере) определяются в объявлении класса. Это соглашение применяется и к остальным примерам данной книги.
Важно!
Массивы объектов можно создавать точно так же, как создаются массивы значений других типов. Например, в следующей программе создается класс
// Пример использования массива объектов.
#include
using namespace std;
enum resolution {low, medium, high}
class display {
int width;
int height;
resolution res;
public:
void set_dim(int w, int h) {width=w; height=h;}
void get_dim(int &w, int &h) {w=width; h=height;}
void set_res(resolution r) {res = r;}
resolution get_res() {return res;}
};
char names[3][8] = {
"низкий",
"средний",
"высокий",
};
int main()
{
display display_mode[3];
int i, w, h;