zoukankan      html  css  js  c++  java
  • c++ primer学习笔记(9)函数(3)

    一.类成员函数

    分为声明(接口)和定义(实现),必须在类定义中

    如下示例

    class Sales_item {
         public:
             // operations on Sales_item objects
             double avg_price() const;
             bool same_isbn(const Sales_item &rhs) const
                  { return isbn == rhs.isbn; }
         // private members as before
         private:
             std::string isbn;
             unsigned units_sold;
             double revenue;
         };
    

    avg_price为声明未定义,same_isbn是声明和定义

    在类外部定义成员函数

    double Sales_item::avg_price() const
        {
            if (units_sold)
                return revenue/units_sold;
            else
                return 0;
        }
    

    二.构造函数

    1.合成的默认构造函数

    如果没有为一个类显式定义任何构造函数,编译器将自动为这个类生成默认构造函数。

    2.自定义构造函数

    // default constructor needed to initialize members of built-in type
    Sales_item(): units_sold(0), revenue(0.0) { }
    

    注意:构造函数的初始化列表,这个比较特殊,构造函数也有执行顺序,先执行初始化列表再执行内部代码

    三.重载函数

    在类中,构造函数和其他函数都可以重载(名字相同而形参表不同),如下

     Record lookup(const Account&);  // find by Account
         Record lookup(const Phone&);    // find by Phone
         Record lookup(const Name&);     // find by Name
         Record r1, r2;
         r1 = lookup(acct);                  // call version that takes an Account
         r2 = lookup(phone);                 // call version that takes a Phone
    

    重载可视作设计问题,也可以借助别名的函数,视情况而定

    四.const修饰成员函数

    const修饰类的成员函数,则该成员函数不能修改类中任何非const成员函数。一般写在函数的最后来修饰。

    class A

    {

    void function()const; //常成员函数, 它不改变对象的成员变量. 也不能调用类中任何非const成员函数。

    }

  • 相关阅读:
    期中架构实现步骤
    安装centos以及优化步骤
    inotify+rsync实现实时热备
    [转]ubuntu安装vncserver实现图形化访问
    [转]电烙铁的使用小技巧
    彻底解决 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    解读系统托盘图标隐藏(删除)
    一个小公式帮你轻松将IP地址从10进制转到2进制
    [查阅]Dalvik opcodes
    [查阅]MSIL Instruction Set
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1965286.html
Copyright © 2011-2022 走看看