Mehrere 〈init-declarator 〉s in einer Deklaration
Das folgende Programm zeigt eine Folge mehrerer kommagetrennter 〈init-declarator 〉s hinter der 〈decl-specifier-seq 〉.
In der Deklaration »char const * p { "abc" }, i { 'a' };« wird die 〈decl-specifier-seq 〉 von »char const« gebildet.
Der erste 〈init-declarator 〉 in »char const * p { "abc" }, i { 'a' };« ist also »* p { "abc" }«, der zweite ist »i { 'a' }«.
»p« wird in »char const * p { "abc" }, i { 'a' };« also als »char const *« deklariert.
»i« wird in »char const * p { "abc" }, i { 'a' };« als »char const« deklariert und nicht etwa als »char const *«!
- 〈decl-specifier-seq 〉 und 〈init-declarator 〉s in »char* p, i;«
decl-specifier-seq char const
.
/ \
/ \
/ \
/ \
/ \
/ \init-declarator * p i
{ "abc" } { 'a' }main.cpp
#include <iostream>
#include <ostream>
#include <string>using namespace ::std::literals;
int main()
{ char const * p { "abc" }, i { 'a' };
::std::cout << p << i << "\n"s; }- Protokoll
abca
Die beiden Deklarationen in dem folgenden Programm haben dieselbe Bedeutung wie die eine Deklaration in dem voranstehenden Programm.
main.cpp
#include <iostream>
#include <ostream>
#include <string>using namespace ::std::literals;
int main()
{ char const * p { "abc" };
char const i { 'a' };
::std::cout << p << i << "\n"s; }- Protokoll
abca