C ++ 中的运算符重载和运算符重写之间的主要区别是什么?

Some use后一个术语来描述当您定义自己的全局operator new
或operator delete
时正在执行的操作。那是因为您自己的定义可以替换库中的默认版本。C ++ 标准使用单词替换和替换在派生的类中使用的函数。
术语“重载”是用于定义您自己的运算符函数的通用术语。即使运算符函数没有发生实际的重载,也会使用该术语。处理此术语的一种方法是因为它“重载”某些运算符的内置含义。
例如,如果我有一个类point
,并想添加它们,如a + b
,我必须创建一个operator+(point other)
函数来处理这个问题。
另一方面,override只存在于多态 (C++ 中的virtual
) 成员函数中,其中相同签名的重新定义会覆盖派生方法中的相同签名。
struct base {
virtual void foo();
void foo(int); // overloads void foo()
};
struct derived : base {
void foo(); // overrides void base::foo()
void foo(int); // overloads void derived::foo()
// unrelated to void::base(int)
};
int main() {
derived d;
base & b = d;
b.foo( 5 ); // calls void base::foo(int)
b.foo(); // calls the final overrider for void base::foo()
// in this particular case void derived::foo()
d.foo( 5 ); // calls void derived::foo(int)
}
很好的作业问题。我会在这里帮助你...重载意味着 2 个具有相同名称和不同签名 + 返回类型的方法。重写意味着 2 个具有相同名称的方法,其中子方法具有不同的功能。这个练习的例子落在你身上。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(70条)