Difference between revisions of "Beginner C++ Game Programming Tutorial 14"

From Chilipedia
Jump to: navigation, search
(Other New(ish) Things)
(Compiler-Generated Copy Constructor and Copy Assignment operator)
Line 20: Line 20:
 
The default copy constructor will in turn copy construct each of the members of the object under construction using the corresponding member in the object being passed in.
 
The default copy constructor will in turn copy construct each of the members of the object under construction using the corresponding member in the object being passed in.
 
* <code>ClassName& ClassName::operator=( const ClassName& )</code>
 
* <code>ClassName& ClassName::operator=( const ClassName& )</code>
The default copy assignment operator will in turn copy assign each of the members of the object under assignment using the corresponding member in the object being passed in.
+
The default copy assignment operator will in turn copy assign each of the members of the object under assignment using the corresponding member in the object being passed in. It also returns a reference to the object under assignment.
  
 
== Video Timestamp Index ==
 
== Video Timestamp Index ==

Revision as of 20:03, 27 November 2016

This is a two-part tutorial in which we tackle a game with a little more substance--the Snake Game. Grids and arrays galore. Majestic.

Main Concepts Taught

  • Managing used/unused sections of an array
  • struct vs class
  • Inner (nested) classes
  • operator overloading

Other New(ish) Things

There was a bunch of other newish bullshit that Chili used, some of which he didn't go into much depth on. For those of you who give a shit, here is some extra info.

Aggregate Initialization {}

With the struct Location (and later, class), we didn't define any constructors, so all we had was the default do-nothing constructor that is generated by the compiler. In order to initialize a Location at one point in the video, Chili used something like Location loc = {69,69};. This is allowed, but the data type being initialized must satisfy certain conditions. Namely, it must have only public data members and it must have no constructors defined. For the full details on the requirements, see this page. The brace {} initialization can be used for classes etc. that have constructors as well, but then the parameters have to conform to the constructor(s) and it will just call the applicable constructor.

Compiler-Generated Copy Constructor and Copy Assignment operator

In the tutorial, we assign Location objects to one another, and we construct a Location by copying an existing one. These operations actually call member functions that are defined for the class (or struct), and if you do not supply these member functions, the compiler will generate them by default.

  • ClassName::ClassName( const ClassName& )

The default copy constructor will in turn copy construct each of the members of the object under construction using the corresponding member in the object being passed in.

  • ClassName& ClassName::operator=( const ClassName& )

The default copy assignment operator will in turn copy assign each of the members of the object under assignment using the corresponding member in the object being passed in. It also returns a reference to the object under assignment.

Video Timestamp Index

Tutorial 14a

Tutorial 14b (coming soon!)

Homework

To be announced!

Downloads

See also