C++
Без названия
Поиск…
Беззнаковые классы
В отличие от именованного класса или структуры, неназванные классы и структуры должны создаваться в тех случаях, когда они определены, и не могут иметь конструкторов или деструкторов.
struct {
int foo;
double bar;
} foobar;
foobar.foo = 5;
foobar.bar = 4.0;
class {
int baz;
public:
int buzz;
void setBaz(int v) {
baz = v;
}
} barbar;
barbar.setBaz(15);
barbar.buzz = 2;
Анонимные участники
Как нестандартное расширение для C ++, обычные компиляторы позволяют использовать классы как анонимные члены.
struct Example {
struct {
int inner_b;
};
int outer_b;
//The anonymous struct's members are accessed as if members of the parent struct
Example() : inner_b(2), outer_b(4) {
inner_b = outer_b + 2;
}
};
Example ex;
//The same holds true for external code referencing the struct
ex.inner_b -= ex.outer_b;
Как псевдоним типа
Типы классов-типа могут также использоваться при создании псевдонимов типов, то есть посредством typedef
и using
:
C ++ 11
using vec2d = struct {
float x;
float y;
};
typedef struct {
float x;
float y;
} vec2d;
vec2d pt;
pt.x = 4.f;
pt.y = 3.f;
Анонимный союз
Имена членов анонимного объединения относятся к сфере действия декларации союза, которая должна быть различной для всех других имен этой области. Пример здесь имеет ту же конструкцию, что и пример анонимных пользователей с использованием «struct», но является стандартным.
struct Sample {
union {
int a;
int b;
};
int c;
};
int main()
{
Sample sa;
sa.a =3;
sa.b =4;
sa.c =5;
}
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow