C++/Class/Class Member

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Assign values using the member initialization syntax

  
#include <iostream>
using namespace std;
class MyClass {
  const int numA; // const member
  const int numB; // const member
public:
  // Initialize numA and numB using initialization syntax.
  MyClass(int x, int y) : numA(x), numB(y) { }
  int getNumA() { 
     return numA; 
  }
  int getNumB() { 
     return numB; 
  }
};
int main()
{
  MyClass object1(7, 9), object2(5, 2);
  cout << "Values in object1 are " << object1.getNumB() << " and " << object1.getNumA() << endl;
  cout << "Values in object2 are " << object2.getNumB() << " and " << object2.getNumA() << endl;
  return 0;
}


enum field

  
#include <iostream>
using namespace std;
enum Days { Monday, Tuesday, Wednesday, Thursday, Friday };
class MyClass 
{
  public:
    int *lucky_number;
    enum Days lucky_day;
};

int main(void)
{
   MyClass wow;
   int lucky = 1500;
   wow.lucky_day = Monday; 
   
   wow.lucky_number = &lucky;
   cout << *(wow.lucky_number) << endl;
   switch (wow.lucky_day) 
   {
     case Monday: cout << "Monday\n";
                  break;
     default: cout << "My lucky day ain"t any day but Monday\n";   
   };
}


getName member function reads from the name member variable and the setName member function writes to it

  
#include <iostream>
#include <string>
using namespace std;
class Person {
   private:
      string name; 
      int height;      
   public:
      string getName() const;
      void setName(string);
      int getHeight() const;
      void setHeight(int);
};
   string Person::getName() const
   { return name; }
   void Person::setName(string s)
   { 
      if (s.length() == 0)
         name = "No name assigned";
      else
         name = s; 
   }
   int Person::getHeight() const
   { return height; }
   void Person::setHeight(int h)
   { 
      if (h < 0)
         height = 0;
      else
         height = h; 
   }
void setValues(Person&);
void getValues(const Person&);
int main ()
{
   Person p1;
   setValues(p1);  
   cout << "Outputting person data\n";
   getValues(p1);
   return 0;
}
void setValues(Person& pers)
{
   string str;
   int h;
   cout << "Enter person"s name: ";
   getline(cin,str);
   pers.setName(str);
   cout << "Enter height in inches: ";
   cin >> h;
   cin.ignore();
   pers.setHeight(h);
}
void getValues(const Person& pers)
{
   cout << "Person"s name: " << pers.getName() << endl; 
   cout << "Person"s height in inches is: " <<         pers.getHeight() << endl;  
}


The Member Initialization Syntax

  
#include <iostream>
using namespace std;
class MyClass {
  int numA;
  int numB;
public:
  MyClass(int x, int y) {
    numA = x;
    numB = y;
  }
  int getNumA() { 
    return numA; 
  }
  int getNumB() { 
    return numB; 
  }
};
int main()
{
  MyClass object1(7, 9), object2(5, 2);
  cout << "Values in object1 are " << object1.getNumB() << " and " << object1.getNumA() << endl;
  cout << "Values in object2 are " << object2.getNumB() << " and " << object2.getNumA() << endl;
  return 0;
}


Use class name to reference field name

   
#include <iostream>
#include <iomanip>
#include <string.h>
#include <stdlib.h>
using namespace std;
class Book 
{
  public: 
    Book(char *title, char *author, char *publisher, float price);
    Book(void);
    void show_title(void) { cout << title << "\n"; };
    float get_price(void) { return(price); };
    void show_book(void){ 
      show_title(); 
      show_publisher();
    };
  private:
    char title[256];
    char author[64];
    float price;
    char publisher[256];
    void show_publisher(void) { cout << publisher << "\n"; };
};
Book::Book(char *title, char *author, char *publisher, float price)
 {
   strcpy(Book::title, title);
   strcpy(Book::author, author);
   strcpy(Book::publisher, publisher);
   Book::price = price;
 }
Book::Book(void)
 {
   cerr << "You must specify initial values for Book instance\n";
   exit(1);
 }
int main(void)
 {
   Book tips("A", "B","C", 49.95);
   Book diary;
   tips.show_book();
   diary.show_book();
 }