声明一个Human类:class Human{ xxx};
定义一个Human类型的变量man:Human man;
定义一个含有100个元素的Human对象类型的数组:Human man[100];
类中public后的成员函数和数据成员可以在类之外用对象.函数名(变量名)
被访问,private后的只能在本类中被访问。
用class声明类后,如果其类成员没有加访问限制符(public,private或protected),则默认为私有成员。
class默认私有,struct默认公有。
类成员函数在类声明之中声明但在类声明之外定义,定义时需要加域解析符void 类名::函数名(参数){函数体}
。在声明函数前加inline可强制转换成内联函数。
在类声明之内定义的叫内联函数。
一般将类的声明放在头文件当中。
例:堆栈类的创建和操作
#include<iostream>
using namespace std;
class Stack{
public:
enum { MaxStack = 5 };
void init() { top = -1; }
void push( int n) {
if ( isFull() ){
errMsg( "Full stack. Can't push." );
return;
}
arr[ ++top ] = n;
}
int pop() {
if( isEmpty() ){
errMsg( "Empty stack. Popping dummy value." );
return dummy_val;
}
return arr[ top-- ];
}
bool isEmpty() { return top < 0; }
bool isFull() { return top >= MaxStack - 1; }
void dump() {
cout << "Stack contents, top to bottom:\n";
for (int i = top; i>= 0; i--)
cout << '\t' << arr[ i ] << '\n';
}
private:
void errMsg( const char* msg ) const {
cerr << "\n*** Stack operation failure: " << msg << '\n';
}
int top;
int arr[ MaxStack ];
int dummy_val;
};
int main(){
Stack s1;
s1.init();
s1.push(9);
s1.push(4);
s1.dump();
cout << "Popping " << s1.pop() << '\n';
s1.dump();
s1.push(8);
s1.dump();
s1.pop();
s1.pop();
s1.dump();
s1.pop();
s1.dump();
s1.push(3);
s1.push(5);
s1.dump();
for (unsigned i = 0; i < Stack::MaxStack; i++){
s1.push(1);
}
s1.dump();
return 0;
}