static inline

myseemylife 2011-12-09 04:12:52
一个类是所有类的基类,有一个函数。为什么有一个static还有一个inline版的。。。
static是方便调用么?inline加快编译速度么?
static bool connect(const QObject *sender, const char *signal,
const QObject *receiver, const char *member, Qt::ConnectionType =
Qt::AutoConnection);
inline bool connect(const QObject *sender, const char *signal,
const char *member, Qt::ConnectionType type =
Qt::AutoConnection ) const;
...全文
316 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yisikaipu 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 myseemylife 的回复:]那这个inline和c语言里面的宏定义是一样的作用咯。。。[/Quote]

是有这么点点意思

在现在的编译器优化面前,inline这个关键字你基本上可以认为是多余的,至少别被它分心

所以这里只要区别静态与非静态

class Cls
{
public:
static void f(int,int)
{
printf("static function\n");
}

void f(int)
{
printf("function\n");
}
};

int main()
{
Cls::f(1,1); // 通过类名直接调用,不需要对象名
//Cls::f(1); // 错误

Cls c;
c.f(1);
c.f(1,1); // 通过对象名也可以调用

return 0;
}
myseemylife 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yisikaipu 的回复:]
根据参数判断这是两个不同的函数
有static的,参考“静态成员函数”
无static的是非静态成员函数

inline是把函数展开为代码,避免函数调用开销,是为了加快运行速度,而不是加快编译速度
[/Quote]
那这个inline和c语言里面的宏定义是一样的作用咯。。。
yisikaipu 2011-12-09
  • 打赏
  • 举报
回复
根据参数判断这是两个不同的函数
有static的,参考“静态成员函数”
无static的是非静态成员函数

inline是把函数展开为代码,避免函数调用开销,是为了加快运行速度,而不是加快编译速度

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧