首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果C++结构成员函数定义是在结构体之外定义的,那么它们的定义有差异吗?

如果C++结构成员函数定义是在结构体之外定义的,那么它们的定义有差异吗?
EN

Stack Overflow用户
提问于 2013-09-11 15:24:06
回答 1查看 4.8K关注 0票数 4

关于结构成员函数的C++问题。

除了名字以外,f1()f2()有什么区别?

代码语言:javascript
运行
AI代码解释
复制
 struct F{
   int f1(){
      return 0;  
    }
    int f2();    
 }; 
 int F::f2(){
     return 0;
 }

我可以说f1()是内联的,但f2()不是吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-11 15:33:12

正确的是,f1是内联的,而f2不是内联的,但它不是--只是--因为它是在类中定义的。如果将f2定义为

代码语言:javascript
运行
AI代码解释
复制
inline int F::f2() {
    return 0;
}

C++11规范第9.3节指出,f1是“在其类定义中定义的”,而f2是“在其类定义之外定义的”。然后,它声明在其类定义中定义的任何函数都是内联的,而在其类定义之外定义的函数必须显式地标记为内联(如上面的示例所示),否则它们是非内联的(如您的f2)。

除了将函数隐式内联外,类定义内与定义外的关系并不重要。类定义内部和类定义外部的概念只出现在9.3.2-9.3.5中,而更广泛的“内联”概念出现在规范的其他部分。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18752944

复制
相关文章
C++结构体的定义和创建
类的定义Student.cpp #include <iostream> using namespace std; struct Student { // 成员变量 string name; int age; // 成员函数 void say() const { cout << name << "的年龄是" << age << endl; } }; 创建对象访问类的成员变量 第一种 使用 . 访问成员变量 #include "student/
是小张啊喂
2022/08/18
7190
结构体变量的定义
结构体变量的基本定义方式与普通变量是相似的,但是由于结构体类型是在程序中自义的,因此结构体变量的定义就更加灵活,可以采用以下3种形式。
pigeon
2022/04/11
1.4K0
Nasm 结构体定义
在NASM内部,没有实际意义上的定义结构体类型的机制,NASM使用宏 STRUC 和 ENDSTRUC来定义一个结构体。STRUC有一个参数,它是结构体的名字。可以使用“RESB”类伪指令定义结构体的域,然后使用ENDSTRUC来结束定义。
战神伽罗
2019/07/24
1.2K0
C语言结构体类型定义+结构体变量的定义与使用及其初始化+结构体变量作为函数参数
在结构体类型定义好的情况下,注意是结构体类型定义好的情况下,才能定义结构体变量。 比如:
Twcat_tree
2022/11/30
2.5K0
C语言结构体类型定义+结构体变量的定义与使用及其初始化+结构体变量作为函数参数
C语言结构体定义
第一种 //使用typedef将 struct poly_node定义一个别名 poly_node typedef struct poly_node{ int coef; int exp struct poly_node * next; }poly_node; poly_node node1; 第二种 //定义结构体类型poly_node的同时定义结构体变量node1 struct poly_node{ int coef; int exp struct
用户5513909
2023/04/25
1.8K0
结构体或类定义中对变长成员的处理
此外,sizeof(stHeadInfo)的结果是不包括char cgiinfo[0]的,因为元素是0个,所以不占空间。
王亚昌
2018/08/03
6910
C++结构体和类的区别_c++有结构体吗
1.结构体是一种值类型,而类是引用类型。值类型用于存储数据的值,引用类型用于存储对实际数据的引用。
全栈程序员站长
2022/11/16
9820
go语言结构体定义使用
package main import ( "fmt" "sync" ) type Info struct { info map[int]string mu sync.RWMutex } func main() { x := &Info{info: make(map[int]string)} x.Set(1, "golang") s := x.Get(1
李海彬
2018/03/27
8030
go语言结构体定义使用
package main import ( "fmt" "sync" ) type Info struct { info map[int]string mu sync.RWMutex } func main() { x := &Info{info: make(map[int]string)} x.Set(1, "golang") s := x.Get(1
李海彬
2018/03/22
6880
【C 语言】结构体 ( 结构体类型定义 | 结构体类型别名 | 声明结构体变量的三种方法 | 栈内存中声明结构体变量 | 定义隐式结构体时声明变量 | 定义普通结构体时声明变量 )
使用 struct 关键字 , 定义普通的 结构体类型 , 这是定义了 固定大小内存块别名 , 此时还没有给 结构体 分配内存 ;
韩曙亮
2023/03/29
2.3K0
go语言结构体定义使用
package main import ( "fmt" "sync" ) type Info struct { info map[int]string mu sync.RWMutex } func main() { x := &Info{info: make(map[int]string)} x.Set(1, "golang") s := x.Get(1
李海彬
2018/03/26
7240
【编程经验】结构体的定义和使用
结构体的定义和使用 结构体与数组类似,都是由若干分量组成的,与数组不同的是,结构体的成员可以是不同类型,可以通过成员名来访问结构体的元素。 结构体的定义说明了它的组成成员,以及每个成员的数据类型。定义一般形式如下: struct 结构类型名 { 数据类型 成员名 1; 数据类型 成员名 2; ...... 数据类型 成员名 n; }; 结构的
编程范 源代码公司
2018/04/18
1.1K0
【编程经验】结构体的定义和使用
结构体的定义和初始化
c语言使用结构体变量进一步加强了表示数据的能力。 定义形式:struct 结构体名{ 结构体包含的基本类型 }; 比如我们打游戏,会有人物的名称,血量,蓝量,经验等等,如果我们把这些数据都用一个人物数据的结构体来表示的话 struct Game_person{ char name[]; int hp; int mp; double experience; }; 它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member). 上述是我们已经创建了一个基本的结构体模板(结构体类型),它指明了结构体的存储方式(),如果我们想真正创建一个结构体对象。就要实例化结构体 struct Game_person user1; 可以这么理解,(char name[50]) 如此,我们就实例化了一个结构体对象;有了实例对象,就可以对结构体对象进行初始化了
用户7272142
2023/10/11
3920
结构体的定义和初始化
dotnet 设计规范 · 结构体定义
易变的属性指的是在调用属性返回值的时候返回的是新的实例,易变的属性会有很多的问题。
林德熙
2019/03/13
3800
自定义、枚举、结构体类型
通过用户自定义类型,简化了verilog代码量并实现更多功能;用户自定义类型使得代码的可读性更强;
数字芯片社区
2020/07/20
1.5K0
8.1 定义和使用结构体变量
一、建立结构体类型 C语言中允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体 一般形式 struct 结构体名 {成员表列}; 花括号内是该结构体所包含的子项,称为结构体的成员 注意:结构体类型的名字是由一个关键字struct和结构体名组合而成的 二、定义结构体类型变量 有3种方法 (1)先声明结构体类型,再定义该类型的变量 (2)在声明类型的同时定义变量 一般形式 struct 结构体名 { 成员表列 }变量名表列; (3)不指定类型名
小林C语言
2019/08/09
6920
dotnet 设计规范 · 结构体定义
易变的属性指的是在调用属性返回值的时候返回的是新的实例,易变的属性会有很多的问题。
林德熙
2018/09/18
4430
结构体类型定义的一般式
struct 结构体名 { 类型名1 域名1; 类型名2 域名2; 类型名3 域名3; 类型名4 域名4; ... ... 类型名n 域名n; }; 说明:结构体类型是用户自定义类型,使用时需要按照规定的 形式定义类型标识符,然后才能定义相应类型的变量。 例如: struct student /**定义了一个结构体类型,类型标识符为 struct student,其中包含5个域, 分别用num代表姓名,sex代表性别,age代表年龄,score代表成绩
谙忆
2021/01/19
2900
Rust中结构体的定义和实例化
结构体和我们在“元组类型”部分论过的元组类似,它们都包含多个相关的值。和元组一样,结构体的每一部分可以是不同类型。但不同于元组,结构体需要命名各部分数据以便能清楚的表明其值的意义。由于有了这些名字,结构体比元组更灵活:不需要依赖顺序来指定或访问实例中的值。 定义结构体,需要使用 struct 关键字并为整个结构体提供一个名字。结构体的名字需要描述它所组合的数据的意义。接着,在大括号中,定义每一部分数据的名字和类型,我们称为 字段( field)。结构体类似于Java中的实体。 一个存储用户账号信息的结构体:
共饮一杯无
2022/12/13
9100
9.1 定义和使用结构体变量
1、C语言中允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体。在其他一些高级语言中称“记录”。
小林C语言
2019/07/12
1K0
9.1 定义和使用结构体变量

相似问题

使用doxygen在结构定义之外记录c结构的成员。

15

使用成员结构定义结构

11

c++结构定义-如何在构造函数中使用单个参数定义成员结构

10

结构成员(函数)能在结构本身之前定义吗?

20

这个结构是定义的,那么为什么函数认为它没有定义呢?

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文