zoukankan      html  css  js  c++  java
  • 重载

    【C++自我精讲】基础系列三 重载
    0前言

    分二部分:函数重载,操作符重载。

    1函数重载

    函数重载:指在同一名字空间中,函数名称相同,参数类型、顺序或数量不同的一类函数,同一函数名的函数能完成不同功能。

    复制代码
    //非函数重载,只是返回值不一样
    void Fun(int i);
    int  Fun(int i);
    
    //非函数重载,不在同一名字空间
    namespace A
    {
        int Add(int i, int j); 
    };
    namespace B
    {
        float Add(float i, float j); 
    };
    
    //函数重载
    int Add(int i, int j); 
    float Add(float i, float j); 
    复制代码

    重命名机制:函数重载的名称都是一模一样的,C++编译器就是通过重命名机制来区别这些同名函数的(不同的C++编译器,重命名机制可能不一样)。

    //重命名机制
    void Fun(int i, double j);  //c++编译器把函数名Fun其实重命名为_Fun_int_double
    void Fun(double i, int j);  //c++编译器把函数名Fun其实重命名为_Fun_double_int

    C++调用C 函数:C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。

      void Fun(int i, ini j); C 编译器编译后的名字为_Fun。

      void Fun(int i, int j); C++编译器编译后的名字为_Fun_int_int。

      C 编译器和C++编译器产生的名字不同,所以C++不能直接调用C 函数。用extern“C”解决。

    复制代码
    extern "C"
    {
        //头文件
        #include “header.h”  
        //函数
        void Fun(int i, int j);
    }
    复制代码
    2操作符重载

    操作符重载:指用关键字operator加运算符表示的函数。可以把其理解为特殊形式的函数,运算符本身是函数名。

    int Add(int i, int j);       //普通函数
    int operator+(int i, int j); //+运算符函数
    //用法
    int k = Add(10, 20);
    int m = 10 + 20;

     操作符重载规则:

     

     ps:后面讲到类时再结合例子讲解下操作符重载为成员函数。

    版权声明: 本博客地址 http://www.cnblogs.com/joinclear,欢迎转载,转载请标明原文作者和链接。

    文章说明: 一家之辞难免有误,欢迎您中肯的指正;如对您有帮助,不胜荣幸,但更希望能够抛砖引玉。

    - joinclear     

     
  • 相关阅读:
    a标签中调用js的几种方法
    IE11浏览器:请不要再叫我IE,谢谢
    IE11浏览器:请不要再叫我IE,谢谢
    浅谈href=#与href=javascript:void(0)的区别
    浅谈href=#与href=javascript:void(0)的区别
    Google Java编程风格指南
    Google Java编程风格指南
    Git学习小结 ~ Lethe's Blog
    Binder机制简析(三)
    Ness
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3181158.html
Copyright © 2011-2022 走看看