C++为什么没有重复定义错误?

        今天在看到一个.cpp文件,这个cpp类的定义和函数的实现写在一起,我就在想这样的有什么劣势。很明显,就是在包含的时候出现重复定义。

于是又想到当他们分离的时候,为什么不会出现重复定义呢?例如:

// 1.h

class A

{

   int a;

}

// void int add(){}

//2.cpp

#include"1.h"

//3.cpp

#include"1.h"

void main()

{

}

既然2.obj和3.obj都包含有类A,但是为什么不会出现问题呢?  而如果加上函数add,为什么会出现重复定义呢?是不是思想有点奇怪了,在思考为什么不出现重复定义。

想了一会也想不通,就出去方便了一下,在出去途中,突然想到从类型上进行分析:

函数add是一个连接时期的东西;而类型A是编译时期的东西;从这个方面分析,这个问题太简单了......Mark一下:如果你在一个cpp中包含同一个头文件两次(没有#pragma once),也是会出现错误的,这是编译时期的重复定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值