C++ 样式:函数声明上的内联
可能重复:C++ 样式:函数声明上的内联,c++,coding-style,inline,C++,Coding Style,Inline,可能重复: 我不是百分之百确定,但据我所知,如果我在hpp文件上声明一个函数,它的主体将被视为标记为内联(编译器将决定要做什么),我的意思是: 与以下内容相同: //myfile.hpp class StackOverflow{ public: ***inline*** void overflow(){_overflow = true;} ... } 如果我错了,那么问题就结束了,但除此之外,我真的很喜欢将函数标记为内联函数,即使它不是必需的,通用代码风格指南是否对此进行了说明 非常
我不是百分之百确定,但据我所知,如果我在hpp文件上声明一个函数,它的主体将被视为标记为内联(编译器将决定要做什么),我的意思是: 与以下内容相同:
//myfile.hpp
class StackOverflow{
public:
***inline*** void overflow(){_overflow = true;}
...
}
如果我错了,那么问题就结束了,但除此之外,我真的很喜欢将函数标记为内联函数,即使它不是必需的,通用代码风格指南是否对此进行了说明
非常感谢在类定义中定义函数体使函数隐式地与使用关键字
inline
标记函数相同
就编码风格而言,
仅仅在类中定义函数体不是一个好的实践
class Foo {
public:
void method(); ← best practice: don't put the inline keyword here
...
};
inline void Foo::method() ← best practice: put the inline keyword here
{ ... }
解释理由:
class Fred {
public:
void f(int i, char c)
{
...
}
};
虽然这对编写类的人来说比较容易,但对所有读者来说都比较难,因为它混合了类的“做什么”和“如何做”。由于这种混合,我们通常更喜欢在类主体之外用inline
关键字定义成员函数。理解这一点的洞察力:在一个面向重用的世界中,通常会有许多人使用您的类,但只有一个人构建它(您自己);因此,你应该做有利于多数人的事,而不是少数人的事
在类定义中定义函数体使函数隐式地与使用关键字
inline
标记函数体相同
就编码风格而言,
仅仅在类中定义函数体不是一个好的实践
class Foo {
public:
void method(); ← best practice: don't put the inline keyword here
...
};
inline void Foo::method() ← best practice: put the inline keyword here
{ ... }
解释理由:
class Fred {
public:
void f(int i, char c)
{
...
}
};
虽然这对编写类的人来说比较容易,但对所有读者来说都比较难,因为它混合了类的“做什么”和“如何做”。由于这种混合,我们通常更喜欢在类主体之外用inline
关键字定义成员函数。理解这一点的洞察力:在一个面向重用的世界中,通常会有许多人使用您的类,但只有一个人构建它(您自己);因此,你应该做有利于多数人的事,而不是少数人的事
由于在本文中提到的关键字
inline
没有提供任何信息,请将其忽略。这只是视觉上的混乱
如果有一个选项使内联定义的函数成为非内联函数,这将是一个不同的问题(以默认情况下的private
)为例):在这里,可以认为,即使是默认情况,将选择显式也会使理解变得更容易。但这里别无选择。无论您做什么,在类主体中定义的成员函数都是内联的
事实上,将其显式标记为inline
类似于提供其他推断信息。你不会写下面的吧
#define member
#define function
class StackOverflow{
public:
member function inline void overflow() { _overflow = true; }
}
由于在本文中提到的关键字
inline
没有提供任何信息,请将其忽略。这只是视觉上的混乱
如果有一个选项使内联定义的函数成为非内联函数,这将是一个不同的问题(以默认情况下的private
)为例):在这里,可以认为,即使是默认情况,将选择显式也会使理解变得更容易。但这里别无选择。无论您做什么,在类主体中定义的成员函数都是内联的
事实上,将其显式标记为inline
类似于提供其他推断信息。你不会写下面的吧
#define member
#define function
class StackOverflow{
public:
member function inline void overflow() { _overflow = true; }
}
如果将函数声明为类内部的内联函数,对于类似于
register
关键字的函数,编译器可以确定(这是一个建议)进行优化是否明智。通常,使用在类本身内部内联编程的内联函数是一条经验法则,但是也可以在类的实现中完成,尽管这并不常见,而且它提供的唯一好处是链接,如果您决定将.h/.hpp文件作为API头传递出去的话 如果将函数声明为类内部的内联函数,对于类似于register
关键字的函数,编译器可以确定(这是一个建议)进行优化是否明智。通常,使用在类本身内部内联编程的内联函数是一条经验法则,但是也可以在类的实现中完成,尽管这并不常见,而且它提供的唯一好处是链接,如果您决定将.h/.hpp文件作为API头传递出去的话 我知道复制品不准确。但作为一个关于编码风格的问题,它并不适合“如果我在带有主体的hpp文件上声明一个函数,它将被视为标记为内联”。请注意,这仅适用于成员函数。我知道重复项并不准确。但作为一个关于编码风格的问题,它并不适合“如果我在带有主体的hpp文件上声明一个函数,它将被视为标记为内联”。请注意,这仅适用于成员函数。这是混淆问题<代码>内联,首先表示链接。这不是由编译器决定的,它是强制性的。不幸的是,语言设计者也用它来暗示乐观主义者内联调用一个如此声明的函数;我本应该更清楚地说明这一区别。我的意思是:如果编译器认为这样做有好处,那么函数将由编译器内联。如上所述:[链接]这是令人困惑的问题<代码>内联,首先表示链接。这不是由编译器决定的,它是强制性的。不幸的是,语言设计者也用它来暗示乐观主义者内联调用一个如此声明的函数;我应该有点