C++ C++;函数重载,调用;超载;功能
我有一些代码如下所示:C++ C++;函数重载,调用;超载;功能,c++,C++,我有一些代码如下所示: // original function size_t computeAverageRating(Movie m) { // take a movie object // compute average rating } // override original function size_t computeAverageRating(size_t movieIndex) { // take the index of a movie getMovieOb
// original function
size_t computeAverageRating(Movie m) { // take a movie object
// compute average rating
}
// override original function
size_t computeAverageRating(size_t movieIndex) { // take the index of a movie
getMovieObject(movieIndex);
// call original function from here?
}
在不创建两个名称不同的方法的情况下,是否可以执行注释中描述的操作?您拥有的方法非常好。编译器将根据参数选择最佳函数,例如:
size_t z;
Movie x;
size_t a = computeAverageRating(x);
size_t b = computeAverageRating(z);
将从a的第一个函数获得平均评级,然后从b的第二个函数获得平均评级。您拥有的功能非常好。编译器将根据参数选择最佳函数,例如:
size_t z;
Movie x;
size_t a = computeAverageRating(x);
size_t b = computeAverageRating(z);
将从a的第一个函数获得平均评级,然后从b的第二个函数获得平均评级。假设
getMovieObject()
实际返回Movie
(尽管我将computeaverating()
改为使用Movie&m
以避免复制对象):
应该这样做。假设
getMovieObject()
实际返回一个Movie
(尽管我将computeaverating()
更改为使用Movie&m
以避免复制对象):
应该这样做。应该有效,这是一个好方法,那么你为什么要寻找另一种方法呢
size_t computeAverageRating(size_t movieIndex) {
return computeAverageRating(getMovieObject(movieIndex));
}
如果可行的话,这是一个很好的方法,那么你为什么要寻找另一种方法呢
size_t computeAverageRating(size_t movieIndex) {
return computeAverageRating(getMovieObject(movieIndex));
}
据我所知,如果函数是在父类中定义的,那么如果不重写父类函数,就不能在子类中使用相同的函数名和不同的参数 如果要使用,则必须重写父类中定义的方法,或者需要在父类中声明新函数定义 例: 或
据我所知,如果函数是在父类中定义的,那么如果不重写父类函数,就不能在子类中使用相同的函数名和不同的参数 如果要使用,则必须重写父类中定义的方法,或者需要在父类中声明新函数定义 例: 或
对这就是重载函数的用途。是的。这就是重载函数的作用。你肯定是指
const-Movie&m
?你肯定是指const-Movie&m
?
class A
{
public:
size_t computeAverageRating(Movie m) { // take a movie object
// compute average rating
}
virtual size_t computeAverageRating(size_t movieIndex){};
};
class B:public A
{
public:
size_t computeAverageRating(size_t movieIndex)
{
getMovieObject(movieIndex);
//put your logic here
}
};