C++ error: redefinition of `void Book:"解决方案

C++ error: redefinition of `void Book:"
请大家帮忙看看错误在哪里,为什么我把类的成员函数的定义放在类的定义中就能通过,在类外编译就出现redefinition

C++编译错误 
--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------

检查文件依赖性...
正在编译 C:\Users\leo\Desktop\学习代码 (4).cpp...
[Error] C:\Users\leo\Desktop\学习代码 (4).cpp:17: error: redefinition of `void Book::sale(int)'
[Error] C:\Users\leo\Desktop\学习代码 (4).cpp:12: error: `void Book::sale(int)' previously defined here
[Error] C:\Users\leo\Desktop\学习代码 (4).cpp:24: error: redefinition of `void Book::show()'
[Error] C:\Users\leo\Desktop\学习代码 (4).cpp:13: error: `void Book::show()' previously defined here
[Error] C:\Users\leo\Desktop\学习代码 (4).cpp:30: error: redefinition of `void Book::set(char*, int, int)'
[Error] C:\Users\leo\Desktop\学习代码 (4).cpp:14: error: `void Book::set(char*, int, int)' previously defined here
[Warning] C:\Users\leo\Desktop\学习代码 (4).cpp:43:2: warning: no newline at end of file

构建中止 学习代码 (4): 6 个错误, 1 个警告


代码:

#include<iostream>
using namespace std;

class Book{
private:
char *name;
int  price;
int num;
public:
Book(char *na,int pr,int nu):name(na),price(pr),num(nu){}
Book():name("none"),price(0),num(0){}
void sale(int nu){}
void show(){}
void set(char *na,int pr,int nu){}
};

void Book::sale(int){
if(num<0)cout<<"sale out!";
else {num=num-nu;
cout<<"the sale money:"<<nu*price<<endl;
}
}

void Book::show(){
cout<<"the book's name:"<<name<<endl;
cout<<"the book's price:"<<price<<endl;
cout<<"the book's number:"<<num<<endl;
}

void Book::set(char*,int,int){
name=na;
price=pr,
num=nu;
}


int main()
{
Book Harry("harry",199,23);
Harry.show();
Harry.sale(12);
Harry.show();
}
------解决方案--------------------
void sale(int nu){}
兄弟,你知道后面的{}是个什么意思么。