Есть простые типы данных, есть и сложные, определяемые пользователем - пользовательский тип данных. В чистом C - это struct id {}, union id {} и enum id {}. В C++ - class id {}, причем понятие класса здесь настолько широкое, что оно включает в себя и struct id {}, и union id {}, и enum id {}. Поэтому структура может иметь свои методы, идентификаторы доступа (public:, private:, protected:), в общем мы имеем дело с объектной ориентацией. Например, такое в C не прокатит:
#include <iostream>
using namespace std;
struct first {
private:
int a;
};
struct test {
int n;
} tpl;
struct sec: first {
int s;
sec() {
cout << "***" << endl;
a = 16;
}
void f(int param = 0) {
cout << "in sec struct function" << endl;
p.s = param;
cout << "s = " << p.s << endl;
(p.s)++;
cout << "s++ = " << p.s << endl;
};
void show() {
cout << "a = " << a << endl;
}
} p;
void testing() {
cout << "in testing function" << endl;
}
test func(int n = 0) {
tpl.n = n;
return tpl;
}
int main() {
testing();
func();
cout << "func(0). tpl.n = " << tpl.n << endl;
func(16);
cout << "func(16). tpl.n = " << tpl.n << endl;
p.f(16);
cout << "Outline. p->s = " << p.s << endl;
p.show();
return 0;
}
Стоит только отметить, по-умолчанию ( если явно не указывать ) тип доступа в struct id {}; - public:, а в class id {}; - private: