0

假设我们有:

class Dictionary {
    int n;
    int *ints;
    char **strs;
    inline void init(int n);
public:
    Dictionary(int n);
    Dictionary(const Dictionary& dic);
};

和 :

Dictionary::Dictionary(int n) {
    init(n);
}

void Dictionary::init(int n) {
    this->n=n;
    ints=new int[n];
    strs=new char*[n];
}
Dictionary::Dictionary(const Dictionary& dic){
    init(n);
    for (int i=0;i<n;i++) {
        ints[i]=dic.ints[i];
        strs[i]=dic.strs[i];
    }
}

有没有更有效的方法来共享 init 中的代码?

4

1 回答 1

1

在标题中:

class Dictionary {
    int n;
    int *ints;
    char **strs;
    inline void init(int n) {
        this->n=n;
        ints=new int[n];
        strs=new char*[n];
    }

public:
    Dictionary(int n);
    Dictionary(const Dictionary& dic);
};

其他地方:

Dictionary::Dictionary(int n) {
    init(n);
}

Dictionary::Dictionary(const Dictionary& dic){
    init(n);
    for (int i=0;i<n;i++) {
        ints[i]=dic.ints[i];
        strs[i]=dic.strs[i];
    }
}

为了提高效率,更有可能内联共享代码。

于 2012-06-18T11:38:12.603 回答