为了账号安全,请及时绑定邮箱和手机立即绑定

小白 求解释 C++ 类内的成员函数 自带extern ~~ 谢谢!!

小白 求解释 C++ 类内的成员函数 自带extern ~~ 谢谢!!

C++
慕粉3379761 2016-11-06 22:57:58
最近在看c++中  .dll的实现。。看到 extern 关键字  。。 有些疑惑。。在C语言中 extern关键字用来表明该函数 或 变量 在 本文件外部有定义。。会在链接时自动处理。。而且 由于默认情况下 extern可以省略(在定义时和声明时)。故只要写出函数原型或变量声明 即可 调用外部函数 或 变量。。  那在c++中呢?对于一般的 全局函数 及 变量 我能理解 应该和C是一样的 。。但是对于类的声明 和 实现呢? 这里就有点糊涂了?一般对于类的定义(即声明)是写在头文件中的。。而实现是在 对应的 .cpp文件中  之前只是了解了 如何使用。。只要在别处要用时包含对应的头文件即可。。如今想弄明白缘由。。。。不知道是否就是 C中extern的实现呢 ?   头文件中的就是对于这个类的声明 .cpp中就是对应的实现 都省略了 extern关键字 ?? 不知是不是一开的思路就错了  。。。  T - T求大触,,解释一下。。最好能细一点  。。。谢谢
查看完整描述

1 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

你对C语言中extern的理解差不多是正确的。

C++中extern对函数和变量的作用差不多。不管是在C还是C++中,extern都是一种storage class specifier,会影响被修饰对象的生存期和链接性。但是extern是不能修饰class成员的!


C++的类定义一般单独写在头文件中,那是因为其他要使用这个类的代码需要知道该类的定义,这样方便include类定义。 含有类实现的代码文件自然就在开头先include自己的类定义——省得再重写一遍类自己的定义了。 这和extern关键字没关系,这是“头文件”和“实现文件”如何组织的问题。

查看完整回答
反对 回复 2016-11-10
  • 慕粉3379761
    慕粉3379761
    原来如此。。果然还是自己当时想多了
  • onemoo
    onemoo
    所以说按照C++标准规范,extern是不能修饰类成员的。不知道你见到的是什么情况...
  • weixin_慕盖茨0584344
    weixin_慕盖茨0584344
    回复 onemoo我想问一下,extern可以连接另外一个文件中的类数据成员变量吗?
  • 1 回答
  • 0 关注
  • 3078 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信