前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >理解c++中的声明与定义

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

原创
作者头像
村子里的设计师
发布2023-05-20 23:17:47
5440
发布2023-05-20 23:17:47
举报
文章被收录于专栏:程序设计a

如何理解声明和定义

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

为什么要区分声明和定义

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

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

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

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

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

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

思考

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何理解声明和定义
  • 为什么要区分声明和定义
  • 为什么静态成员变量类内声明,类外定义
  • 思考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档