C++中的类支持声明和实现的分离
-
.h头文中只有类的声明
成员变量和成员函数的声明 -
.cpp源文件中完成类的其它实现
成员函数的具体实现#ifndef _OPERATOR_H_ #define _OPERATOR_H_ class Operator { private: char mOp; double mP1; double mP2; public: bool setOperator(char op); void setParameter(double p1, double p2); bool result(double& r); }; #endif #include "Operator.h" bool Operator::setOperator(char op) { bool ret = false; if( (op == '+') || (op == '-') || (op == '*') || (op == '/') ) { ret = true; mOp = op; } else { mOp = '\0'; } return ret; } void Operator::setParameter(double p1, double p2) { mP1 = p1; mP2 = p2; } bool Operator::result(double& r) { bool ret = true; switch( mOp ) { case '/': if( (-0.000000001 < mP2) && (mP2 < 0.000000001) ) { ret = false; } else { r = mP1 / mP2; } break; case '+': r = mP1 + mP2; break; case '*': r = mP1 * mP2; break; case '-': r = mP1 - mP2; break; default: ret = false; break; } return ret; }
简化的实验
#ifndef _TEST_H_ #define _TEST_H_ #include<iostream> class Test { int i; public: Test(); Test(int a); ~Test(); int getI(); }; #endif #include<iostream> #include"Test.h" using namespace std; Test::Test() { i = 0; cout << "Test() " << endl; } Test::Test(int a) { i = a; cout << "Test(int a)" << endl; } Test::~Test() { cout << "~Test()" << endl; } int Test::getI() { return i; } #include<iostream> #include"Test.h" using namespace std; int main(int argc, const char *argv[]) { Test t1; Test t2(100); Test* tp = new Test; delete tp; return 0; }