zoukankan      html  css  js  c++  java
  • Cpp Chapter 8: Adventures in Functions Part2

    ) You can't pass an expression to a function that requires a reference:

    double refcube(double &ra);
    double x = 3.0;
    refcube(x); // valid
    refcube(x + 3.0) // invalid because x + 3.0 is not a variable

    ) Passing by value is a norm that you might not want to change the origin value while doing calculations(e.g. calculating the square of a number). If you insist on using a reference while not changing the original value, use const in function prototype and header:

    double refcube(const double &ra)

    ) Better use const reference arguments because const reference allows the function to handle both const and non-const data, However, non-const reference could only handle non-const data.

    ) Using references with a structure(most intended):

    struct thing
    {
    ...
    };
    
    void process(thing & rt); // accept struct as reference
    void process(const thing & rt); // accept struct as const reference

    You could also make a function return a reference to structure, this makes the return process easier, without copying the entire structure again:

    struct thing
    {
    ...
    };
    
    const thing & process(const thing & rt); // return a const struct reference
    const thing & accumulate(thing & target, const thing & addition);
    thing a, b, c, total;
    total = accumulate(accumulate(a, b), c);
    // return struct reference makes it possible to nest accumulate() function
    // also make it easier for the return value to go straight to total
    // instead of copy the entire structure again

    Also avoid returning references to temporary structures which are declared inside a function(also better const reference).

    const string & version(string & s1, const string & s2);
    
    const string & version(string & s1, const string & s2)
    {
        string temp; // local variable
        temp = s2 + s1 + s2;
        return temp; // Don't return reference to local variables!!!!!
    }
  • 相关阅读:
    01 用CE查找游戏基址
    过QQ游戏大厅的SX保护 Evil0r's Blog 博客频道 CSDN_NET
    CODE人物坐标
    显示Combobox1中怪物名称列表.txt
    模拟安键F5 SendKeys
    红蓝保护(按键模拟)
    喊话CALL
    CODE Unicode roleName_字符类型数据 人物名子
    显示人物主要信息
    捡物 call 代码注入
  • 原文地址:https://www.cnblogs.com/fsbblogs/p/9693116.html
Copyright © 2011-2022 走看看