Функция, описанная как член (без спецификации friend $$R.11.4),называется функция-член и вызывается в соответствии с синтаксисомчлена класса ($$R.5.2.4), например: struct tnode { char tword[20]; int count; tnode *left; tnode *right; void set(char*, tnode* l, tnode *r); }; Здесь set является функцией-членом и может вызываться так: void f(tnode n1, tnode n2) { n1.set("abc",&n2,0); n2.set("def",0,0); } Считается, что определение функции-члена принадлежит областивидимости ее класса. Это означает, что в функции-члене (если онанестатическая, $$R.9.4) можно непосредственно использовать именачленов ее класса. В статической функции-члене можно непосредственноиспользовать имена только статических членов, элементов перечисленияи вложенных типов. Если определение функции-члена находится внеописания класса, ее имя следует уточнить именем класса с помощьюоперации::, например: void tnode::set(char* w, tnode* l, tnode* r) { count = strlen(w)+1; if (sizeof(tword)<=count) error("tnode string too long"); strcpy(tword,w); left = 1; right = r; } Обозначение tnode::set указывает, что функция set является членом инаходится в области видимости класса tnode. Имена членов tword,count, left и right относятся к членам того объекта, с именемкоторого вызывалась Поэтому в вызове n1.set("abc",&n2,0) twordобозначает n1.tword, а в вызове n2.set("def",0,0) tword обозначаетn2.tword. Функции strlen, error и strcpy должны быть описаны где-тов программе. Члены можно определять ($$R.3.1) вне описания класса; если вописании класса они были описаны, но не определены, их не следуетописывать заново, см. $$R.3.3. После определения классафункции-члены этого класса можно использовать при описании друзей.Всякая вызываемая в программе функция-член должна иметь в точностиодно определение. Результат вызова нестатической функции-члена ($$R.9.4) класса X,когда она вызывается не с объектом класса X, неопределен.