In C++, the simplest way to create a new aggregate data type is by defining a struct. A struct is a collection of variables, possibly of different types, that are grouped together under a single name.
As a simple example, let us consider a point in the x, y plane. In mathematical notation, points are often written in parentheses, with a comma separating the coordinates. For example, \((0, 0)\) indicates the origin, and \((x, y)\) indicates the point \(x\) units to the right and \(y\) units up from the origin.
It is a common error to leave off the semi-colon at the end of a structure definition. It might seem odd to put a semi-colon after a squiggly-brace, but youโll get used to it.
The struct definition must appear before it is used and be in scope where you use it. This means that they generally appear outside of any function definition, usually at the beginning of the program (after the include statements) so that they are available in all the functions. If building a program in multiple files, the struct definition generally goes into a header or module file that other files can import or include to make use of.
A struct defines a new type of data. Think of it as a โblueprintโ that describes how to build an item of that type. struct Point does not actually create a point anymore than the blueprint of a house gives you something to live in. To actually make a point that we can work with, we need to create a variable using the new data type that has been defined. The value that is created is referred to as an instance of the struct.
The first line is a conventional variable declaration: blank has type Point. The next two lines initialize the instance variables of the structure. The โdot notationโ used here is similar to the syntax for invoking a function on an object, as in fruit.size().
As usual, the name of the variable blank appears outside the box and its value appears inside the box. In this case, that value is a compound object with two named instance variables.