我对C ++中的常量对象感到困惑
当我们传递const对象的常量对象/引用时,这是否意味着我们无法编辑该对象的属性值?
或者如果它不是平均值或 constant
那就是'引用'对象'或'属性'
当我们返回一个常量对象时
声明像
这样的功能return_type function_name(parameters) const
{
}
const
关键字在函数的末尾是语法吗?如果我们返回一个const
对象,为什么不应该如下
const return_type function_name(parameters)
{
}
对不起,如果它是一个noob问题;)
答案 0 :(得分:6)
此语法:
return_type function_name(parameters) const
{
}
表示可以为const类的实例调用function_name()
。它对返回值的常量没有任何影响。
const return_type function_name(parameters)
{
}
...表示从function_name()
返回的值是const(并且没有说明调用其成员函数的对象的常量。)
答案 1 :(得分:3)
当我们传递const对象的常量对象/引用时,这是否意味着我们无法编辑该对象的属性值?
是。如果函数是const
,则函数不能修改类上的任何非可变字段。 (或者在类上调用任何其他非const方法)。
以及如果我们返回一个const对象,为什么不应该像下面那样
因为返回类型也可以是常量。请考虑以下事项:
#include <string>
class MyClass
{
std::string data;
public:
void SetData(const std::string& content)
{
data.assign(content);
}
const std::string& GetData() const //Note that the function is const, and so
{ //is the reference it returns.
return data;
}
};
请注意,我们正在向内部成员返回const
引用。如果我们返回非const
引用,则某人可以使用该引用来修改类的私有成员,在本例中为MyClass::data
。
答案 2 :(得分:0)
有效地,添加的const会将方法的第一个“隐藏”参数从ClassType * const this
更改为const ClassType * const this
。