C++ Tutorial/Class/class definition
Содержание
- 1 classes example
- 2 Class objects can be assigned to each other using default memberwise assignment
- 3 containership with employees and degrees
- 4 Create an object from a Class and call its function
- 5 Define a class with a member function that takes a parameter
- 6 Define class to record time
- 7 Define class with a data member and member functions to set and get its value
- 8 Define your first class
- 9 Friend Classes
- 10 Inner class
- 11 Instantiating multiple objects of the class using its constructor
- 12 Local Classes: A class may be defined within a function
classes example
<source lang="cpp">#include <iostream>
- include <stdio.h>
using namespace std; class Rectangle {
int x, y; public: void set_values (int,int); int area (void) {return (x*y);}
}; void Rectangle::set_values (int a, int b) {
x = a; y = b;
} int main () {
Rectangle rect; rect.set_values (3,4); cout << "area: " << rect.area(); return 0;
}</source>
area: 12"
Class objects can be assigned to each other using default memberwise assignment
<source lang="cpp">#include <iostream> using std::cout; using std::endl; class Date { public:
Date( int = 1, int = 1, int = 2007 ); void print();
private:
int month; int day; int year;
}; Date::Date( int m, int d, int y ) {
month = m; day = d; year = y;
} void Date::print() {
cout << month << "/" << day << "/" << year;
} int main() {
Date date1( 8, 8, 2008 ); Date date2; cout << "date1 = "; date1.print(); cout << "\ndate2 = "; date2.print(); date2 = date1; cout << "\n\nAfter default memberwise assignment, date2 = "; date2.print(); cout << endl; return 0;
}</source>
date1 = 8/8/2008 date2 = 1/1/2007 After default memberwise assignment, date2 = 8/8/2008
containership with employees and degrees
<source lang="cpp">#include <iostream>
#include <string> using namespace std; class student{ private: string school; string degree; public: void getedu(){ cout << " Enter name of school or university: "; cin >> school; cout << " Enter highest degree earned \n"; cout << " (Highschool, Bachelor"s, Master"s, PhD): "; cin >> degree; } void putedu() const{ cout << "\n School or university: " << school; cout << "\n Highest degree earned: " << degree; } }; class employee{ private: string name; unsigned long number; public: void getdata(){ cout << "\n Enter last name: "; cin >> name; cout << " Enter number: "; cin >> number; } void putdata() const{ cout << "\n Name: " << name; cout << "\n Number: " << number; } }; class manager{ private: string title; double dues; employee emp; student stu; public: void getdata(){ emp.getdata(); cout << " Enter title: "; cin >> title; cout << " Enter golf club dues: "; cin >> dues; stu.getedu(); } void putdata() const{ emp.putdata(); cout << "\n Title: " << title; cout << "\n Golf club dues: " << dues; stu.putedu(); } }; class scientist{ private: int pubs; employee emp; student stu; public: void getdata(){ emp.getdata(); cout << " Enter number of pubs: "; cin >> pubs; stu.getedu(); } void putdata() const{ emp.putdata(); cout << "\n Number of publications: " << pubs; stu.putedu(); } }; class laborer{ private: employee emp; public: void getdata(){ emp.getdata(); } void putdata() const{ emp.putdata(); } }; int main() { manager m1; scientist s1, s2; laborer l1; cout << endl; cout << "\nEnter data for manager 1"; m1.getdata(); cout << "\nEnter data for scientist 1"; s1.getdata(); cout << "\nEnter data for scientist 2"; s2.getdata(); cout << "\nEnter data for laborer 1"; l1.getdata(); cout << "\nData on manager 1"; m1.putdata(); cout << "\nData on scientist 1"; s1.putdata(); cout << "\nData on scientist 2"; s2.putdata(); cout << "\nData on laborer 1"; l1.putdata(); cout << endl; return 0; }</source>
Create an object from a Class and call its function
<source lang="cpp">#include <iostream> using std::cout; using std::endl; class MyClass { public:
void displayMessage() { cout << "Welcome!" << endl; }
}; int main() {
MyClass obj; obj.displayMessage(); return 0;
}</source>
Welcome!
Define a class with a member function that takes a parameter
<source lang="cpp">#include <iostream> using std::cout; using std::cin; using std::endl;
- include <string>
using std::string; using std::getline; class MyClass { public:
void displayMessage( string n ) { cout << "Welcome \n" << n << "!" << endl; }
}; int main() {
string name; MyClass obj; cout << "Please enter the name:" << endl; getline( cin, name ); cout << endl; obj.displayMessage( name ); return 0;
}</source>
Please enter the name: Joe Welcome Joe!
Define class to record time
<source lang="cpp">#include <iomanip>
- include <iostream>
using std::cout; using std::endl; using std::setfill; using std::setw; class Time { public:
Time(); void setTime( int, int, int ); void printUniversal(); void printStandard();
private:
int hour; int minute; int second;
}; Time::Time() {
hour = minute = second = 0;
} void Time::setTime( int h, int m, int s ) {
hour = h ; minute = m; second = s ;
} void Time::printUniversal() {
cout << setfill( "0" ) << setw( 2 ) << hour << ":" << setw( 2 ) << minute << ":" << setw( 2 ) << second;
} void Time::printStandard() {
cout << ( ( hour == 0 || hour == 12 ) ? 12 : hour " << setfill( "0" ) << setw( 2 ) << minute << ":" << setw( 2 ) << second << ( hour < 12 ? " AM" : " PM" );
} int main() {
Time t; t.printUniversal(); t.printStandard(); t.setTime( 1, 2, 6 ); t.printUniversal(); t.printStandard(); t.setTime( 99, 99, 99 ); t.printUniversal(); t.printStandard(); return 0;
}</source>
00:00:0012:00:00 AM01:02:061:02:06 AM99:99:993:99:99 PM
Define class with a data member and member functions to set and get its value
<source lang="cpp">#include <iostream> using std::cout; using std::cin; using std::endl;
- include <string>
using std::string; using std::getline; class MyClass { public:
void setName( string name ) { name = name; } string getName() { return name; } void displayMessage() { cout << "Welcome to the grade book for\n" << getName() << "!" << endl; }
private:
string name;
}; int main() {
string n; MyClass obj; cout << "Initial name is: " << obj.getName() << endl; cout << "\nPlease enter the name:" << endl; getline( cin, n ); obj.setName( n ); cout << endl; obj.displayMessage(); return 0;
}</source>
Initial name is: Please enter the name: Joe Welcome to the grade book for !
Define your first class
<source lang="cpp">#include <iostream> using namespace std;
class ThreeDimension {
public:
int X; int Y; int Z;
};
int main() {
ThreeDimension myDimension; int range; // Assign values to fields in myDimension. myDimension.X = 7; myDimension.Y = 16; myDimension.Z = 21; // Compute the range assuming a full tank of gas. range = myDimension.Y * myDimension.Z; cout << range; return 0;
}</source>
336
Friend Classes
<source lang="cpp">#include <iostream> using namespace std;
class TwoValues {
int a; int b;
public:
TwoValues(int i, int j) { a = i; b = j; } friend class Min;
};
class Min { public:
int min(TwoValues x);
};
int Min::min(TwoValues x) {
return x.a < x.b ? x.a : x.b;
}
int main() {
TwoValues ob(10, 20); Min m; cout << m.min(ob); return 0;
}</source>
Inner class
<source lang="cpp">#include <iostream> using namespace std; class Outer {
public: Outer(void) { cout << "Just instantiated an outer\n"; outer_data = 2002; }; class Inner { public: Inner(void) { cout << "Just instantiated an inner\n"; inner_data = 1001; }; void show_data(void) { cout << "Inner: " << inner_data << endl; }; private: int inner_data; } inside_stuff; void show_all_data(void) { inside_stuff.show_data(); cout << "Outer: " << outer_data << endl; }; private: int outer_data;
}; int main(void) {
Outer my_data; my_data.show_all_data();
}</source>
Instantiating multiple objects of the class using its constructor
<source lang="cpp">#include <iostream> using std::cout; using std::endl;
- include <string>
using std::string; class MyClass { public:
MyClass( string name ) { setName( name ); } void setName( string n ) { name = n; } string getName() { return name; } void displayMessage() { cout << "Welcome " << getName() << "!" << endl; }
private:
string name;
}; int main() {
MyClass obj1( "A" ); MyClass obj2( "B" ); cout << obj1.getName()<< "\n" << obj2.getName() << endl; return 0;
}</source>
A B
Local Classes: A class may be defined within a function
<source lang="cpp">#include <iostream> using namespace std;
void f();
int main() {
f(); return 0;
}
void f() {
class myclass { int i; public: void put_i(int n) { i=n; } int get_i() { return i; } } ob; ob.put_i(10); cout << ob.get_i();
}</source>