不确定c ++中的常量函数是什么

时间:2015-05-07 05:15:28

标签: c++ function const constants

赋值是创建一个返回矩形区域的常量函数getArea()

double getArea() {
    return width * height;
}
这是吗?

我在参数后面加上const吗?

我真的不明白我被问到了什么。

4 个答案:

答案 0 :(得分:6)

在C ++中,当const关键字用于函数声明时,函数变为const。 const函数的想法是不允许它们修改它们被调用的对象。

def index
    if 
        params[:category].blank?
        @posts = Post.all.order("created_at DESC").paginate(page:params[:page], per_page: 1 )
    else
        @category_id = Category.all 
        @category_id = Category.find_by(name: params[:category]).id
        @posts = Post.where(category_id: @category_id).order("created_at DESC").paginate(page:params[:page], per_page: 1 )
    end
end

const在函数声明中的(空)参数列表之后。表示getArea()函数不修改对象的状态,即对象的数据成员。

请参阅此链接以获取更多说明:http://www.codeproject.com/Articles/389602/Constant-Member-Functions-Are-Not-Always-Constant

答案 1 :(得分:3)

double getArea() const 
   {
     return width * height;
   }
当用户不想修改或更改该变量或函数的值时,使用

const关键字。

答案 2 :(得分:2)

就像内置数据类型(intdoublechar等...)一样,可以使用{{1}将类对象设为const关键字。所有const变量必须在创建时初始化。

一旦通过构造函数初始化了const类对象,就不允许任何修改对象成员变量的尝试,因为它会违反对象的常量。这包括直接更改成员变量(如果它们是公共的),或者调用成员函数来设置成员变量的值。

const类对象只能调用const个成员函数。 const成员函数是一个成员函数,它保证它不会更改任何类变量或调用任何非const成员函数。

消息来源: leancpp.com

答案 3 :(得分:2)

考虑:

class ClassType
{
int x;
public:
ClassType(int _x) : x(_x) {}

int GetX() { return x;}
};

const ClassType object(20);
object.GetX();

这将无法编译,因为object是const(只读)。但GetX未标记const(只读)。 length()size()IsOpen()是可以从只读对象调用的方法示例。因此,类应该为const对象提供这样的(const)函数。

您通常不会创建const对象,但您确实将它们传递给:

void foo(const ClassType& obj);

因此,GetX函数应为:

int GetX() const { return x;}

const作出承诺或合同此函数不会修改此对象