在引入头文件之前,在C ++入门书中有这句话(第2.6.3节第76页第5版):
当我们在函数之外定义一个类时,在任何给定的源文件中可能只有该类的一个定义。另外,如果我们在几个不同的文件中使用一个类,那么每个文件中的类定义必须相同。
我解释最后一句的方式可能有问题。我的理解是,如果我想在不使用标题的情况下在同一个项目的多个文件中使用类,我必须在每个文件中定义该类。每个文件中的类都必须具有相同的名称和内容,否则编译器会抱怨。
但是,我尝试定义两个具有相同名称但在两个不同源文件中具有不同内容的类。我甚至使用过这些课程,但它完全奏效。
答案 0 :(得分:1)
正式地,对同一类具有两个不同的定义不需要诊断(即,没有警告或错误消息)。但是行为是“未定义的”,也就是说,语言定义并没有告诉你代码应该做什么。因此,代码可以做任何事情,包括工作得很好。当然,当你为最重要的客户展示你的程序时,它会崩溃。
答案 1 :(得分:0)
它没有完美地工作。它可能有效,但它是未定义的行为,使定义不同。