C++/Class/Class Basics

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

Address class: class definition and implementation

#include <iostream>
#include <cstring>
using namespace std;
class Address {
  char name[40];
  char street[40];
  char city[30];
  char state[3];
  char zip[10];
public:
  void store(char *n, char *s, char *c, char *t, char *z);
  void display();
};
void Address::store(char *n, char *s, char *c, char *t, char *z)
{
  strcpy(name, n);
  strcpy(street, s);
  strcpy(city, c);
  strcpy(state, t);
  strcpy(zip, z);
}
void Address::display()
{
  cout << name << endl;
  cout << street << endl;
  cout << city << endl;
  cout << state << endl;
  cout << zip << endl;
}
int main()
{
  Address a;
  a.store("C", "11 Lane", "W", "In", "4");
  a.display();
  return 0;
}


A simple class with member variable, constructor, destructor

#include <iostream>
using namespace std;
class who {
  char name;
public:
  who(char c) { 
     name = c;
     cout << "Constructing who";
     cout << name << endl;
  }
  ~who() { 
     cout << "Destructing who: " << name << endl; 
  }
};
who makewho()
{
  who temp("B");
  return temp;
}
int main()
{
  who ob("A");
  makewho();
  return 0;
}


Assign object1 to object2

#include <iostream>
using namespace std;
class BaseClass {
  int a;
public:
  void load_a(int n) { 
    a = n; 
  }
  int get_a() { 
    return a; 
  }
};
class DerivedClass : public BaseClass {
  int b;
public:
  void load_b(int n) { 
     b = n; 
  }
  int get_b() { 
     return b; 
  }
};
int main()
{
  DerivedClass object1, object2;
  object1.load_a(5);
  object1.load_b(10);
  
  object2 = object1;
  cout << "Here is object1"s a and b: ";
  cout << object1.get_a() << " " << object1.get_b() << endl;
  cout << "Here is object2"s a and b: ";
  cout << object2.get_a() << " " << object2.get_b() << endl;
  return 0;
}


Class forward declaration

#include <iostream>
using namespace std;
class pr2;  // 
class pr1 {
  int printing;
  
public:
  pr1() { 
     printing = 0; 
  }
  void set_print(int status) { 
     printing = status; 
  }
  
  friend int inuse(pr1 object1, pr2 object2);
};
class pr2 {
  int printing;
  
public:
  pr2() { 
     printing = 0; 
  }
  void set_print(int status) { 
     printing = status; 
  }
  
  friend int inuse(pr1 object1, pr2 object2);
};
int inuse(pr1 object1, pr2 object2)
{
  if(object1.printing || object2.printing) return 1;
  else return 0;
}
int main()
{
  pr1 p1;
  pr2 p2;
  if(!inuse(p1, p2)) 
     cout << "Printer idle\n";
  cout << "Setting p1 to printing...\n";
  p1.set_print(1);
  if(inuse(p1, p2)) 
     cout << "Now, printer in use.\n";
  cout << "Turn off p1...\n";
  p1.set_print(0);
  if(!inuse(p1, p2)) 
     cout << "Printer idle\n";
  cout << "Turn on p2...\n";
  p2.set_print(1);
  if(inuse(p1, p2)) 
     cout << "Now, printer in use.\n";
  return 0;
}


Declare class instance

#include <iostream>
using namespace std;
class myclass {
  int a;
public:
  myclass(int x) { 
     a = x; 
  } 
  int geta() { 
     return a; 
  }
};
 
int main()
{
  myclass ob(4);
  cout << ob.geta();
  return 0;
}


Declare Class instance and use them

#include <iostream>
#include <cstring>
using namespace std;
class Book {
  char title[80];             // book title
  char author[40];            // author
  int number;                 // number in library
public:
  void store(char *t, char *name, int num);
  void show();
};
void Book::store(char *t, char *name, int num)
{
  strcpy(title, t);
  strcpy(author, name);
  number = num;
}
void Book::show()
{
  cout << "Title: " << title << endl;
  cout << "Author: " << author << endl;
  cout << "Number on hand: " << number << endl;
}
int main()
{
  Book book1, book2, book3;
  book1.store("D", "t", 2);
  book2.store("T", "v", 2);
  book3.store("T", "e", 1);
  book1.show();
  book2.show();
  book3.show();
  return 0;
}


Init Object array

#include <iostream>
using namespace std;
class CharClass {
  char ch;
public:
  CharClass(char c) { 
     ch = c; 
  }
  char get_ch() { 
     return ch; 
  }
};
int main()
{
  CharClass ob[10] = { 
    CharClass("a"), 
    CharClass("b"), 
    CharClass("c"), 
    CharClass("d"), 
    CharClass("e"), 
    CharClass("f"), 
    CharClass("g"), 
    CharClass("h"), 
    CharClass("i"), 
    CharClass("j")
  };
  int i;
  for(i = 0; i <10; i++) 
    cout << ob[ i ].get_ch() << " ";
  cout << endl;
  return 0;
}


Simplest class definition

#include <iostream>
using namespace std;
class SimpleClass {
  int len;
public:
  SimpleClass(int l);
};
SimpleClass::SimpleClass(int l)
{
  len = l;
  int i;
  for(i = 0; i <len; i++) 
     cout  << "*";
}
int main()
{
  SimpleClass l(10);
  return 0;
}