structure composition : structure « Structure « C++ Tutorial






#include <iostream>

using std::cout;
using std::endl;

#include <iostream>

struct Name {
  char firstname[80];
  char surname[80];
  
  void show();        
};

struct Date {
  int day;
  int month;
  int year;

  void show();        
};

struct Phone {
  int areacode;
  int number;

  void show();        
};

struct Person {
  Name name;
  Date birthdate;
  Phone number;

  void show();
  int age(Date& date);
};

void Name::show() {
    std::cout << firstname << " " << surname << std::endl;
}

void Date::show() {
    std::cout << month << "/" << day << "/" << year << std::endl;
}

void Phone::show() {
    std::cout << areacode << " " << number << std::endl;
}

void Person::show() {
    std::cout << std::endl;
    name.show();
    std::cout << "Brithday: ";
    birthdate.show();
    std::cout << "phone: ";
    number.show(); 
}

int Person::age(Date& date) {
    if(date.year <= birthdate.year)
      return 0;

    int years = date.year - birthdate.year;
    
    if((date.month>birthdate.month) || (date.month == birthdate.month && date.day>= birthdate.day))
       return years;
    else
       return --years;
}


int main() {
  Person her = {{ "L", "G" },      // Initializes Name member
                {1, 4, 1976 },     // Initializes Date member
                {999,5551234}     // Initializes Phone member
               };

  Person actress;
  actress = her;
  her.show();
  Date today = { 4, 4, 2007 };

  cout << endl << "Today is ";
  today.show();
  cout <<  endl; 

  cout << "Today " << actress.name.firstname << " is " 
       << actress.age(today) << " years old."
       << endl;
  return 0;
}
L G
Brithday: 4/1/1976
phone: 999 5551234

Today is 4/4/2007

Today L is 31 years old.








8.1.structure
8.1.1.Use memcpy to duplicate structures
8.1.2.Use cin to read data for a structure
8.1.3.const structure parameter
8.1.4.Define structure to record time
8.1.5.structure composition
8.1.6.Using pointers to structure objects: delete the point
8.1.7.Assign one structure to another structure
8.1.8.Use the keyword struct to illustrate a primitive form of class