C++中,int length() const;和const int length();

本文详细解析了C++中const修饰符的应用场景,包括如何使用const修饰成员函数及返回值,以及这些用法背后的含义。文章还探讨了const在指针返回类型中的作用,并通过具体例子说明了正确和错误的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int length() const
此只能使用于成员函数,意思为此函数里不能函数所在类中的所有成员变量进行修改,他相当于对默认传递到length函数里的this指针加上const的限定,const OneClass * this;

const int length();
可以用于成员函数和非成员函数,表示函数返回值是常量。对于int型的返回值,本身就是使用的值传递返回,所以const修饰int返回值是无意义的,在返回指针的情况下const修饰返回值才有意义,如:
class foo
{
public:
foo()
{
n = 10;
}
const foo * function1()
{
return this;
}

foo * const function2()
{
return this;
}
int n;
};
function1函数返回的指针是指向常量的指针,就不能赋值给非常指针,
如:
foo f;
foo * pf1 = f.function1();
这段代码就会报错

而function2函数的const修饰没有任何作用,因为函数返回按照值传递

 

int length()const是表示该函数为const函数即不修改其数据成员的值;

const int length()中的const没有意义,因为你返回的是一个temp值而temp值本身就是常量。所以这句应该是:

const int& length()

比如:

class A
{
public:
A(int n) : size(n){}
//int length1()const{++size; return size;} // 错误!不能修改成员的值
const int& length2(){return size;}

private:
size;
};

A a(5);

int b = ++a.length2(); // 错误!返回的值是const不能被修改

a.length2() = 5 // 同上

if(a.length2() = 3) // 同上,返回const在这里可避免手误,因为你可能是想要这样a.length2() == 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值