C++入门类定义(初学者)
C++ primer class definition (beginner)
在引入头文件之前,书中有这样一句话C++入门(第 2.6.3 节,第 76 页第五版(:
当我们在函数之外定义一个类时,在任何给定的源文件中可能只有一个该类的定义。此外,如果我们在几个不同的文件中使用一个类,则每个文件中的类定义必须相同。
我解释最后一句话的方式可能有问题。我的理解是,如果我想在同一项目的多个文件中使用一个类而不使用标头,则必须在每个文件中定义该类。每个文件中的类都必须具有相同的名称和内容,否则编译器将抱怨。
但是,我尝试在两个不同的源文件中定义两个名称相同但内容不同的类。我什至使用了这些类,但它完美地工作。
从形式上讲,对同一类有两个不同的定义不需要诊断(即,没有警告或错误消息(。但是行为是"未定义的",也就是说,语言定义不会告诉你代码应该做什么。因此,代码可以做任何事情,包括正常工作。当然,直到您正在为最重要的客户演示您的程序,当它崩溃时。
它没有完美地工作。 它可能已经奏效,但使定义不同是未定义的行为。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 部分定义/别名模板模板参数
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- #为""定义宏;静态";针对不同的上下文
- 如何确保C++函数在定义之前声明(如override关键字)
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在命名空间中定义函数还是限定函数
- 此代码是否违反一个定义规则
- 编译C++时未定义的引用
- 如何修复初学者C++代码中发生的未定义行为
- 对 Class::Class/Function 的未定义引用(OOP 中的初学者)
- C++入门类定义(初学者)
- 初学者问题 - 致命错误LNK1561:必须定义入口点
- 为初学者澄清C++中类定义和实现的一些细节
- 对我的类的未定义引用?C++初学者
- c++初学者:调用默认构造函数vs自定义构造函数
- 这里的未定义引用错误初学者