函数后缀加与不加const的问题

dyw 2007-08-21 07:31:02
情况1:加const
.h文件中
TPtrC8 FolderPath() const; // 加const

.cpp文件中
TPtrC8 folderPath = FolderPath(); // 编译正确

const TDesC8& folderPath = FolderPath(); // 编译正确

情况2:不加const
.h文件中
TPtrC8 FolderPath(); // 不加const

.cpp文件中
TPtrC8 folderPath = FolderPath(); // 编译错误

const TDesC8& folderPath = FolderPath(); // 编译错误

不加const会发生编译错误,是什么道理?(使用Carbide.c++ 1.2编译)
...全文
223 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
isarc 2007-08-22
  • 打赏
  • 举报
回复
我记得以前我用过tdesc来接收tbuf,不行。
也许我记错了。
dyw 2007-08-22
  • 打赏
  • 举报
回复
API中,返回TPtrC8的函数后面都没有const。这个const其实也没有必要。

我的一个CBase类支持拷贝构造函数与赋值函数才引起这个问题。看来为了满足c++的语法还是得加const了。

dyw 2007-08-22
  • 打赏
  • 举报
回复
const TDesC8& folderPath = FolderPath(); // 编译错误
这个肯定不对,因为你不能定义一个抽象类的对象来接值。
-----------------
这个是可以的,多态用法。

只有被声明为const的成员函数才能被一个const类对象调用。
-----------------
应该是这个缘故。

toann 2007-08-22
  • 打赏
  • 举报
回复
TPtrC8 FolderPath() const;
后缀const保证FolderPath中没有修改该类成员的操作。

只有被声明为const的成员函数才能被一个const类对象调用。
isarc 2007-08-22
  • 打赏
  • 举报
回复
const TDesC8& folderPath = FolderPath(); // 编译错误
这个肯定不对,因为你不能定义一个抽象类的对象来接值。

把错误贴出来呀。不然谁知道。
const在后面是指用户不能使用引用来修改返回值。
dyw 2007-08-21
  • 打赏
  • 举报
回复
对,const没有必要,但不加有错
anel 2007-08-21
  • 打赏
  • 举报
回复
TPtrC8:
8 bit non-modifiable pointer descriptor

实际上是const

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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