网络推广平台网站推广,商城网站建设的优点,iis建设网站,wordpress 存储插件C 允许在同一作用域中的某个函数和运算符指定多个定义#xff0c;分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明#xff0c;但是它们的参数列表和定义#xff08;实现#xff09;不相同。当您调用一个重载函…C 允许在同一作用域中的某个函数和运算符指定多个定义分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明但是它们的参数列表和定义实现不相同。当您调用一个重载函数或重载运算符时编译器通过把您所使用的参数类型与定义中的参数类型进行比较决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程称为重载决策。值得注意的是:1、运算重载符不可以改变语法结构。2、运算重载符不可以改变操作数的个数。3、运算重载符不可以改变优先级。运算重载符不可以改变结合性。类重载、覆盖、重定义之间的区别重载指的是函数具有的不同的参数列表而函数名相同的函数。重载要求参数列表必须不同比如参数的类型不同、参数的个数不同、参数的顺序不同。如果仅仅是函数的返回值不同是没办法重载的因为重载要求参数列表必须不同。发生在同一个类里 覆盖是存在类中子类重写从基类继承过来的函数。被重写的函数不能是static的。必须是virtual的。但是函数名、返回值、参数列表都必须和基类相同发生在基类和子类 重定义也叫做隐藏子类重新定义父类中有相同名称的非虚函数 ( 参数列表可以不同 ) 。发生在基类和子类this 指针的作用this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。当对一个对象调用成员函数时编译器先将对象的地址赋给 this 指针然后调用成员函数每次成员函数存取数据成员时由隐含使用 this 指针。运算符重载的同时也可以发生函数重载#includeiostreamusing namespace std;//加号运算符重载
class xiMeng
{
public:int M_A;int M_B;//通过成员函数运算符重载/*xiMeng operator (xiMeng p){xiMeng temp;temp.M_A this-M_A p.M_A;temp.M_B this-M_B p.M_B;return temp;}*/
};//通过全局函数运算符重载
xiMeng operator (xiMeng p1, xiMeng p2)
{xiMeng temp;temp.M_A p1.M_A p2.M_A;temp.M_B p1.M_B p2.M_B;return temp;
}//运算符重载也可以发生函数重载
xiMeng operator (xiMeng p, int num)
{xiMeng temp;temp.M_A p.M_A num;temp.M_B p.M_B num;return temp;
}void xiMengTest() {xiMeng p1;p1.M_A 15;p1.M_B 25;xiMeng p2;p2.M_A 10;p2.M_B 30;//通过全局函数运算符重载xiMeng p3 p1 p2;cout p3.M_A p3.M_A endl;cout p3.M_B p3.M_B endl;//运算符重载也可以发生函数重载xiMeng p4 p1 100;cout p4.M_A p4.M_A endl;cout p4.M_B p4.M_B endl;
}int main()
{xiMengTest();return 0;
}