虽然#ifndef可以防止头文件在同一个.cpp文件中重复编译,但是当两个.cpp文件包含同一个头文件时,那么这个头文件就在两个.cpp文件中都会被编译,这样就发生重定义了。而声明却可以重复声明,只要不是在同一个.cpp文件中重复声明就可以。