理解c++中的声明和定义

如何理解声明和定义

我们经常说的判断语句,如“它是一只猫”,其实包含着“它存在”这一前提。我理解的“声明”是为了说明“它存在”,而“定义”是为了说明“它是什么”。

为什么要区分声明和定义

这与程序的编译运行过程有关。编译过程更关心“是否被声明”,而链接,运行过程更关心“是否被定义”。比如我说“请给我拿杯水”,服务员首先考虑“世界上确实存在水”,再考虑“在哪儿可以得到水”。假如“请给我拿杯水”是程序指令,那编译过程只关心“是否已声明水,水是否存在”,而链接,运行过程则关心“是否定义了水,水在哪儿”。

为什么静态成员变量类内声明,类外定义

想起“白马非马”的故事,世界上只有具体的“白马”,“黑马”,不存在抽象的“马”。

前提1:对程序而言,运行中只有具体的对象,而没有抽象的类。具体的对象需要内存,需要地址,需要被定义;抽象的类不需要内存,不需要地址,不需要被定义只需要被声明。

前提2:类中有一种神奇的成员,静态成员,它是脱离对象的,所以不可能通过对象被定义,但它又是类中的一员,只跟随类被声明过。

结论:静态成员未被定义过,需要手动在类外定义。

思考

感觉是为了维护“抽象的类只需要被声明”这一“理想”,牺牲程序员,手动在类外定义静态变量,失去了实用性。猜测后续会为了实用性而放弃这个无用的理想吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值