C++是声明与实现分离的,即在头文件中声明类体,包括成员变量和成员函数,而在cpp文件中实现成员函数,并访问成员变量。当然这不是绝对的,因为在头文件中类声明的同时也可以实现一些函数,但是这些函数会被编译器自动扩展为inline,即在访问这种类体内部的成员函数时编译器会展开该函数。
类的声明与实现是两回事,这也让我明白了我之前在写程序的时候一直不明白的事情,即头文件的引用问题,由于以前没有在意过,以为头文件只要随便引用就可以了,实际上不是这个样子,在以任何形式使用某个类之前,都必须保证当前位置可以至少得到该类的声明。
这意味着,如果你仅仅在A的类实现所在的cpp文件中引用了B类的头文件声明,那么在A类的声明头文件中,不要创建B类的实例,应该使用指针类型,然后再cpp文件中实例化B类对象。否则会得到编译器的“不能使用不完全类型”的编译错误。
同时:在一个类中,出现多个名字相同,但是参数列表不同的函数叫做重载。在父类中存在,在子类中又重新实现的函数为多态。