首页 > 试题广场 >

如果同时定义了两个函数,一个带const,一个不带,会有问题

[问答题]

如果同时定义了两个函数,一个带const,一个不带,会有问题吗?

当这两个函数作为普通的函数时,编译会报错,无法仅按返回类型区分两个函数
当这两个函数作为类的成员函数时,是没有问题的
发表于 2019-08-03 22:28:32 回复(5)
只要记住一条:顶层const不可以用于重载,底层const可以用于重载。 成员函数参数表后面的const修饰的是this指针指向的对象,所以这是一个底层const,可以用于重载。
编辑于 2020-02-19 12:48:24 回复(0)
如果函数名相同,在相同的作用域内,其参数类型、参数个数,参数顺序不同等能构成函数重载。有趣的是如果同时在类中,对于函数名相同参数列表也相同的成员函数的const函数和非const函数能够构成重载。
它们被调用的时机为:如果定义的对象是常对象,则调用的是const成员函数,如果定义的对象是非常对象,则调用重载的非const成员函数。
发表于 2020-06-28 22:29:20 回复(1)