Чтобы ответить на вопросы:
Все функции в объявлении класса являются функциями-членами, кроме тех, которые отмечены как «друг». Это другие классы или функции, которые могут получить доступ к внутренним
класс, о котором идет речь.
Функции-члены - это функции, которые делают что-то относящееся к классу. Они имеют значение private
по умолчанию или если они идут после обозначения private:
, что означает, что к ним могут обращаться только другие функции в классе. Другими модификаторами доступа являются protected
, означающие, что к ним могут обращаться другие функции класса, а также функции в классах, которые наследуются от этого класса, и public
, означающие, что они являются честной игрой для всех. Классы или функции, которые определены как friend
, могут обращаться к private
и protected
данным и элементам функций.
Я не знаю, что вы подразумеваете под неявным и явным. Одно из возможных значений связано с ключевым словом explicit
, которое можно применять к конструкторам.
В классе Foo, предположим, я объявляю
Foo(int i);
explicit Foo(const char * s);
Это означает, что, если я упомяну где-нибудь значение int, компилятор может обработать его, как если бы это было Foo, но для того, чтобы рассматривать строку как значение, я должен был бы явно указать это, так что если я есть
f(Foo f);
объявлено где-то, затем
f(1);
f(Foo("foo"));
являются законными звонками, но
f("foo");
нет.
Исходя из характера ваших вопросов, я бы сказал, что вам нужна хорошая элементарная книга по C ++. Существует вопрос StackOverflow о превосходных книгах по C ++ , которые я бы порекомендовал в дополнение к C ++ FAQ Lite . Вы можете учиться, изучая программы и задавая здесь случайные вопросы, но это займет больше времени, и вы будете упускать вещи.