【发布时间】:2015-04-20 18:51:17
【问题描述】:
在示例代码中,调用message() 永远不会影响类的内容,所以我希望方法是const。但我不希望返回值也为const,所以如下使用const_cast 是否安全?还是有更好的解决方案?
编辑:对不起..所以n_ 是一个指针!
EDIT2:我终于设法正确地重现了这个问题。如果n_ 是int n[100] 中的数组怎么办?然后我确实看到了没有const_cast 的问题。
class A
{
private:
int n_[10];
public:
/* ... */
int* n() const
{
return const_cast<int*>(n_);
}
};
【问题讨论】:
-
可以,但没必要。您没有返回引用,因此调用者无法通过调用
n()来修改n_。 -
当前代码正试图将
int*作为int返回。 -
现在你允许我这样做了:
const A a; int* p = a.n(); p[0] = 2;。所以不,这根本不安全。
标签: c++ constants const-cast