内联函数写法求证!

周成风 2009-10-12 04:16:19
如下代码是一个非常简单的数据类,所有的代码都是放在.h文件里的,.cpp里只有构造函数。我的问题是:
1、这样的写法没有问题,但如果把函数定义的代码放入.cpp,编译时这四个简单函数会被编译为内联吗?放入类内是没有问题的,但太多的set/get函数在类内部,本人看代码不太舒服。。所以。。

2、不知道有没有也用这样写法的?我用的VX10.2.1422.0版本,在使用CUserMessage的指针访问函数SetSex等时,不会提供输入指导,手动输入后提示有语法错误,当然编译是没有问题的,但使用起来很不方便。提高VX版本能否解决该问题?

可能人有觉得这样的问题没有意义,我主要想形成自己编码的一些简单风格并形成习惯。



class CUserMessage
{
public:
CUserMessage();
~CUserMessage();

void SetSex(int iSex);
void SetAge(const CString& strAge);

int GetSex() const;
CString GetAge() const;

private:
int m_nSex; //性别
CString m_strAge; //年龄
};

inline void CUserMessage::SetSex(int iSex)
{
this->m_nSex = iSex;
}
inline void CUserMessage::SetAge(const CString& strAge)
{
this->m_strAge = strAge;
}
inline int CUserMessage::GetSex() const
{
return m_nSex;
}
inline CString CUserMessage::GetAge() const
{
return m_strAge;
}
...全文
269 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
周成风 2009-10-12
  • 打赏
  • 举报
回复
exceptional c++ style Item25说得很明白了。。谢谢大家。

现代编译器很多可以支持链接时内联,所以是否放在.h里面不是关键。

加不加内联inline也不是关键,因为编译器会针对性能进行优化,谢谢大家,结贴!
na2650945 2009-10-12
  • 打赏
  • 举报
回复
在类内声明就是内联。
否者就是加inline.
kiwigiving 2009-10-12
  • 打赏
  • 举报
回复
放在cpp中就不是内联函数了,而且也没有声明内联函数的方法,必须在你类定义的头文件下面
定义相应的内联函数,就像楼主写的那样。因为内联函数将内联成员函数的声明直接替换成相应
的内联函数定义的代码,所以必须要让在编译器在本文件中看到替换的内容,否则就会出错~
肥多罗 2009-10-12
  • 打赏
  • 举报
回复
内联用inline,不管是在什么文件的啊
C++ PRIMER中建议是放在头文件中定义
别逗我乐 2009-10-12
  • 打赏
  • 举报
回复
学习了,!!!!!!!!!!!
eatsweetpotato 2009-10-12
  • 打赏
  • 举报
回复
看了EXCEPTIONAL STYLE中对inline的文字后,我便觉得inline关键字似乎已经没有什么用了
yshuise 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 alicehyxx 的回复:]
我的理解是,内联函数必须是编译时展开的,放cpp里编译时未包含该函数定义,内联就无从谈起了。
[/Quote]
cpp也可以。但不是全部。
周成风 2009-10-12
  • 打赏
  • 举报
回复
我上面写法也用了inline,关键是这些代码放CPP是否是内联。。好象说法都不一致。。
donwmufromdying 2009-10-12
  • 打赏
  • 举报
回复
inline
周成风 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 itegel84 的回复:]
用关键字啊,你不指定可能跟编译器有关吧。这种东西最好不要寄希望于未确定行为。
[/Quote]

用了..
周成风 2009-10-12
  • 打赏
  • 举报
回复
我的理解是,内联函数必须是编译时展开的,放cpp里编译时未包含该函数定义,内联就无从谈起了。
itegel84 2009-10-12
  • 打赏
  • 举报
回复
用关键字啊,你不指定可能跟编译器有关吧。这种东西最好不要寄希望于未确定行为。
yshuise 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 alicehyxx 的回复:]
引用 5 楼 yshuise 的回复:
这些可以放在cpp中,相应的要加inline


放CPP应该就不是内联了。。

大师们平常怎么写这样的类的? 我的VX没有提示啊。。。
[/Quote]
?
飞天御剑流 2009-10-12
  • 打赏
  • 举报
回复
2、不知道有没有也用这样写法的?我用的VX10.2.1422.0版本,在使用CUserMessage的指针访问函数SetSex等时,不会提供输入指导,手动输入后提示有语法错误,当然编译是没有问题的,但使用起来很不方便。提高VX版本能否解决该问题?
---------------------------------------------
当然可以这样写。是否内联跟写在哪个文件没有关系,只要函数头被inline关键字修饰,就是内联的。
周成风 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yshuise 的回复:]
这些可以放在cpp中,相应的要加inline
[/Quote]

放CPP应该就不是内联了。。

大师们平常怎么写这样的类的? 我的VX没有提示啊。。。
周成风 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 taodm 的回复:]
呃,去看《exceptional c++ style》item25
[/Quote]

谢谢,我找找电子版的。。
yshuise 2009-10-12
  • 打赏
  • 举报
回复
这些可以放在cpp中,相应的要加inline
beyond071 2009-10-12
  • 打赏
  • 举报
回复
内联都在头文件里写,因为编译器要在你调用的地方直接展开你的定义。
周成风 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xingzhe2001 的回复:]
如果如果把函数定义的代码放入.cpp,就不会是内联了应该
[/Quote]

我也是这么想的,但现在这么写的话,这些函数VX没有提示,显示下面还有条红线,很难受。。
taodm 2009-10-12
  • 打赏
  • 举报
回复
呃,去看《exceptional c++ style》item25
加载更多回复(1)

64,651

社区成员

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

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