加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 原型声明和前向声明之间的区别?

发布时间:2020-12-16 10:06:33 所属栏目:百科 来源:网络整理
导读:所以我有这个代码: class xx{ int getnum(); //Is this a forward declaration or a prototype declaration and why?};int xx::getnum(){ return 1+3;} 所以这个问题已经在代码中得到了评论,但是: 是int getnum();前瞻性声明或原型声??明,为什么? 解决方
所以我有这个代码:

class xx
{
    int getnum(); //Is this a forward declaration or a prototype declaration and why?
};

int xx::getnum()
{
    return 1+3;
}

所以这个问题已经在代码中得到了评论,但是:

是int getnum();前瞻性声明或原型声??明,为什么?

解决方法

“前向声明”和“原型声明”这两个术语都没有在C标准中定义,因此非常严格地说,它既不是.这只是一个宣言.如果您想要更具体,可以将其称为非定义声明,或“不是定义的声明”.

当在标准中使用“前向声明”一词时,它们用于引用声明但未定义它们声明的事物(函数或类)的声明.根据这种用法,int getnum()因此是一个前向声明.

函数的“原型声明”在标准(1)中使用得更少,并且主要是在谈论与[C]的兼容性时.但是,在使用时,它指的是与该函数的前向声明完全相同的概念.顺便说一下,你也可以调用int getnum();原型声明.

总而言之,术语“前向声明”和“原型声明”没有正式的定义,但从它们通常使用和理解的方式来看,int getnum();可以描述为.

(1)然而,标准中定义了类似术语“函数原型范围”(C 17 N4659 [basic.scope.proto] 6.3.4 / 1).它在非定义函数声明中建立函数参数名称的范围,它是最接近的封闭函数声明符.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读