例によってロベール著を読んでないし、下のコードはCだけど、
関数内static変数の説明なら、CもC++も変わらんだろう。
(行数節約のため詰め込み・省略してるので良いスタイルじゃない)

#include <stdio.h>

static void in_static(void) {
 static int cnt = 0; /* staticな変数 */
 cnt++;
 printf(" static %d 回目!\n", cnt);
}

static void not_static(void) {
 int cnt = 0; /* staticじゃない変数 */
 cnt++;
 printf("not_static %d 回目?\n", cnt);
}

int main(void) {
 in_static(); not_static();
 in_static(); not_static();
 in_static(); not_static();
 return 0;
}

こんな感じかな。
このコードには盛り込んでないけど、グローバル変数と違って
「関数内static変数には、基本的には関数の外からはアクセスできない」
という性質もある。