Chapter 26. Making Constructive Arguments
In This Chapter
Creating and invoking a constructor with arguments
Overloading the constructor
Constructing data members with arguments
Looking forward to a new format of constructor in the 2009 standard
The Student class in Chapter 25 was extremely simple — almost unreasonably so. After all, a student has a name and a student ID as well as a grade point average and other miscellaneous data. I chose GPA as the data to model in Chapter 25 because I knew how to initialize it without someone telling me — I could just zero out this field. But I can't just zero out the name and ID fields; a no-named student with a null ID probably does not represent a valid student. Somehow I need to pass arguments to the constructor to tell it how to initialize fields that start out with a value that's not otherwise predictable.
Constructors with Arguments
C++ allows the program to define a constructor with arguments as shown here:
class Student
{
public:
Student(const char* pszNewName, int nNewID)
{
int nLength = strlen(pszNewName) + 1;
pszName = new char[nLength];
strcpy(pszName, pszNewName);
nID = nNewID;
}~Student()
{
delete[] pszName;
pszName = 0;
}
protected:
char* pszName;
int nID;
};Here the arguments to the constructor are a pointer to an ASCIIZ string that contains the name of the new student and the student's ID. The constructor first allocates space for the student's name. It then copies the new name into the pszName data member. Finally, it copies over ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access