c++怎么将一个类,拆分出接口类,和实现类
还拿上一遍中定义的GradeBook类来实现:
#include <iostream> using std::cout; using std::endl; #include <string> // program uses C++ standard string class. using std::string; #include <conio.h> // GradeBook class definition class GradeBook { public: // constructor initializes courseName with string supplited as argument. GradeBook(string name) { this->courseName=name; } // end GradeBook constructor // function to set the course name void setCourseName(string name) { this->courseName=name;// store the course name in the object. }// end function setCourseName // function to get the course name. string getCourseName() { return courseName;// return object's courseName }// end function getCourseName // display a welcome message to the GradeBook user void displayMessage() { // call getCourseName to get the courseName cout<<"Welcome to the grade book for \n"<<getCourseName()<<"|"<<endl; }// end function displayMessage private : string courseName; };// end class GradeBook // function main begins program execution int main() { // create two GradeBook objects. GradeBook gradeBook1("CS101 Introduction to C++ programing");; GradeBook gradeBook2("CS102 Data Structures in C++"); // display initial value of courseName for each GradeBook cout<<"gradeBook1 created for course:"<<endl; gradeBook1.displayMessage(); cout<<"gradeBook2 created for course:"<<endl; gradeBook2.displayMessage(); cout<<"Test the get function"<<endl; cout<<"gradeBook1 call getCourseName"<<gradeBook1.getCourseName()<<endl; cout<<"gradeBook2 call getCourseName"<<gradeBook2.getCourseName()<<endl; std::cin.get(); return 0; // indicates successful termination. }// end main
代码拆分结构:
定义出接口(头文件/GradeBook.h):
#include<string> using std::string; // GradeBook class definition class GradeBook { public: // constructor initializes courseName with string supplited as argument. GradeBook(string name); // function to set the course name void setCourseName(string name); // function to get the course name. string getCourseName(); // display a welcome message to the GradeBook user void displayMessage(); private : string courseName; };// end class GradeBook
定义出实现类(源文件/GradeBook.cpp):
#include <iostream> using std::cout; using std::endl; #include "GradeBook.h" // include definition of class GradeBook // constructor initializes courseName with string supplited as argument. GradeBook::GradeBook(string name) { this->courseName=name; } // end GradeBook constructor // function to set the course name void GradeBook::setCourseName(string name) { this->courseName=name;// store the course name in the object. }// end function setCourseName // function to get the course name. string GradeBook::getCourseName() { return this->courseName;// return object's courseName }// end function getCourseName // display a welcome message to the GradeBook user void GradeBook::displayMessage() { // call getCourseName to get the courseName cout<<"Welcome to the grade book for \n"<<getCourseName()<<"|"<<endl; }// end function displayMessage
在“源文件“下定义Main.cpp写main测试函数:
#include <iostream> using std::cout; using std::endl; #include <conio.h> #include "GradeBook.h" // include definition of class GradeBook // function main begins program execution int main() { // create two GradeBook objects. GradeBook gradeBook1("CS101 Introduction to C++ programing");; GradeBook gradeBook2("CS102 Data Structures in C++"); // display initial value of courseName for each GradeBook cout<<"gradeBook1 created for course:"<<endl; gradeBook1.displayMessage(); cout<<"gradeBook2 created for course:"<<endl; gradeBook2.displayMessage(); cout<<"Test the get function"<<endl; cout<<"gradeBook1 call getCourseName:"<<gradeBook1.getCourseName()<<endl; cout<<"gradeBook2 call getCourseName:"<<gradeBook2.getCourseName()<<endl; std::cin.get(); return 0; // indicates successful termination. }// end main
输出结果:
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。