多态的类型:
重载多态: 运算符重载,函数重载;
强制多态: 关键字;
包含多态: 虚函数;
参数多态: 函数模板,类模板;
运算符重载:
运算符重载是特殊的函数重载,运算符被当作函数名处理;
+,++,=,<<,()运算符的重载 ,使得操作对象可以为类类型;
字符串类对象的相关运算符重载;
operator char*() <=> (char *);
若运算符左边为类类型,运算符重载为成员函数,else,运算符重载为友元函数;
C++重载机制
编译器依据返回值类型,函数名,参数列表在内部生成一个唯一的函数名标志符。C编译器函数底层标识符生成格式为下划线函数名。
常成员函数的重载
成员函数被调用时隐含形参 类名 *const this.成员函数加const后,该隐含形参变为 const * 类名 const this,这也是常成员函数得以重载的原因。
问题:为何不能依据返回值类型重载?
重载多态: 运算符重载,函数重载;
强制多态: 关键字;
包含多态: 虚函数;
参数多态: 函数模板,类模板;
运算符重载:
运算符重载是特殊的函数重载,运算符被当作函数名处理;
+,++,=,<<,()运算符的重载 ,使得操作对象可以为类类型;
字符串类对象的相关运算符重载;
operator char*() <=> (char *);
若运算符左边为类类型,运算符重载为成员函数,else,运算符重载为友元函数;
C++重载机制
编译器依据返回值类型,函数名,参数列表在内部生成一个唯一的函数名标志符。C编译器函数底层标识符生成格式为下划线函数名。
常成员函数的重载
成员函数被调用时隐含形参 类名 *const this.成员函数加const后,该隐含形参变为 const * 类名 const this,这也是常成员函数得以重载的原因。
问题:为何不能依据返回值类型重载?