sorting.h
//宏保护
#ifndef SORTING_H_H_INCLUDED
#define SORTING_H_H_INCLUDED
using namespace std;
class sorting()
{
public:
int n;
void bubble( );
};
#endif
sorting.cpp
#include <iostream>
#include "sorting.h"
using namespace std;
void sorting::bubble()
{
//实现代码here
}
main.cpp
#include <iostream>
#include "sorting.h"
using namespace std;
int main()
{
sorting test; //声明sorting类的对象
test.bubble(); //由对象调用函数
return 0;
}
Makefile
GCC := g++
all:
$(GCC) -c main.cpp -o main.o
$(GCC) -c sorting.cpp -o sorting.o
$(GCC) -o main main.o sorting.o
clean:
# rm main.o -rf
# rm sorting.o -rf
# rm main -rf
rm *.o main *~ -rf
这是一个类封装的例子,使用者无需知道实现细节,可以很方便地调用和测试函数。
#ifndef SORTING_H_H_INCLUDED
#define SORTING_H_H_INCLUDED
......
#endif
以上代码与直接在首行加入#pragma once的作用完全相同。宏保护,当在cpp文件里重复引入时可忽略,如:main.cpp中#include "sorting.h" 两次时,若没有宏保护则编译不通过,提示错误,若增加宏保护则不会。ifndef表示if not define,第一次引入.h时可顺利定义,之后的都被忽略。
private:说明,它后面所有的变量和函数,都不可能被类外访问,只能在类内被使用。
public:说明,它后面的所有变量和函数可以被类外的代码所访问,没有任何限制。
protected:说明,它后面的所有变量和函数,只能被自己或自己派生的类所使用。不能被类外的代码使用