Just learning constructors
// Demonstrates declaration of constructors and
// destructor for the Cat class
// Programmer created default constructor
#include <iostream> // for cout
class Cat // begin declaration of the class
{
public: // begin public section
Cat(int initialAge); // constructor
~Cat(); // destructor
int GetAge(); // accessor function
void SetAge(int age); // accessor function
void Meow();
private: // begin private section
int itsAge; // member variable
};
// constructor of Cat,
Cat::Cat(int initialAge)
{
itsAge = initialAge;
}
Cat::~Cat() // destructor, takes no action
{
}
// GetAge, Public accessor function
// returns value of itsAge member
int Cat::GetAge()
{
return itsAge;
}
// Definition of SetAge, public
// accessor function
void Cat::SetAge(int age)
{
// set member variable itsAge to
// value passed in by parameter age
itsAge = age;
}
// definition of Meow method
// returns: void
// parameters: None
// action: Prints "meow" to screen
void Cat::Meow()
{
std::cout << "Meow.\n";
}
// create a cat, set its age, have it
// meow, tell us its age, then meow again.
int main()
{
Cat Frisky(5);
Frisky.Meow();
std::cout << "Frisky is a cat who is " ;
std::cout << Frisky.GetAge() << " years old.\n";
Frisky.Meow();
Frisky.SetAge(7);
std::cout << "Now Frisky is " ;
std::cout << Frisky.GetAge() << " years old.\n";
return 0;
}
/*#########################################*/
Ok, I am now just being introduced to constructors and here "Cat Frisky(5)" is the Frisky constructor in the main(), ok so this sets the age, now I have a question, if I wanted to make a constructor to set Frisky's hight for example how would I go about it? I might not be making any sense to you here. I mean set the hight with a constructor in this same program, is that possible and if so, how does it work? Thanks in advance.
Re: Just learning constructors
Quote:
Originally posted by elchulo2002
// Demonstrates declaration of constructors and
// destructor for the Cat class
// Programmer created default constructor
#include <iostream> // for cout
class Cat // begin declaration of the class
{
public: // begin public section
Cat(int initialAge); // constructor
~Cat(); // destructor
int GetAge(); // accessor function
void SetAge(int age); // accessor function
void Meow();
private: // begin private section
int itsAge; // member variable
};
Couple other things. In the constructor declaration above, you don't need to name initialAge, just the type (int). You can name it, but the compiler ignores it. You do have to name it in the function definition.
You can have the same declaration initialize a default value - Cat(int = 1) - so that you could just declare a Cat object in your program w/o passing it an age if you want. You can only have one constructor with default values in a class.
You can have more than one constructor. For example, you could have your original constructor and one like - Cat(int, int) - that would automatically be called when you wanted a Cat object with age and height.
You might want some kind of checking mechanism to make sure invalid age values aren't created. This could be done in the constructor or in the setAge function called from the constructor - if (initialAge < 25 || initialAge < 0 ) initialAge = initialAge; else initialAge = 1; -