-1
   class MathOperations{
 public:
 void Message();
 void setSum(int);
 void setSuB(int);
 void setMul(int);
 void setDiv(int);
 void setSqrt(int);
 int getSum();
 int getSub();
 int getMul();
 int getDiv();
 int getSqrt();
private:
int sum, subtract, multiply, divide, sqrt;

クラスでセッターとゲッターを使用するより良い方法はありますか?何かあれば、例を挙げてください。私はクラスについてもう少し学ぼうとしているので、初心者でも私の知識を実装しようとしています。静的メソッドを使用してキーワードthisを使用する方が良い本を読みましたが、それがどのように機能するかわかりません。 ..簡単なアドバイスをいただければ幸いです。

4

2 に答える 2

2

クラスが単純なものの集まりである場合は、パブリック変数を使用しsetters/gettersstruct(クラスとほとんど同じですが、パブリック変数の場合は名前を付けることを好みますstruct) を作成することを検討します。しかし、いずれにせよ、あなたのメソッドがその単純なコンパイラであるなら、おそらくinlineそれらでしょう。

またdon't optimize the code until you found a bottleneck

于 2012-07-20T04:06:03.710 に答える
0
class MathOperations{
    public:
    void Message();
    void setA(int);
    void setB(int);
    int getA();
    ing getB();
    int getSum();
    int getSub();
    int getMul();
    double getDiv();
    double getSqrt();
    private:
    int a, b;

sum、sub、mul、division の値を格納する代わりに、A と B を設定してから答えを計算します。また、切り捨てが予想される場合を除き、除算は double または float を返す必要があります。これが意味することは、getDiv() が int を返し、a=1 と b=2 が返された場合、0 (1/2 = 0.5 は 0 に切り捨てられる) が返されるということです。 double または float を使用する必要があります。

getDiv() の実装例を次に示します。

double MathOperations::getDiv() {
    double tempa = (double)this->a;
    double tempb = (double)this->b;
    return tempa/tempb;
}

現在の例を最適化する限り、次のようなことをしている場合:

class foo {
    public:
    void setA(int);
    void setB(int);
    int getA();
    int getB();

    private:
    int A,B;
}

取得している唯一の真のオーバーヘッド (コンパイラがこのコードを最適化していないと仮定) は、変数を取得または設定するときに関数呼び出しをスタックに追加し、完了したらそれをポップして、変数のコピーを作成して返すことです。これは、最新のコンピューターでは無視できます。

編集:double tempa = (double)this->aこの小さなコード行では多くのことが行われています。分解して説明しましょう。

  1. this->a整数であるクラス a のローカルメンバーを参照します。クラスの詳細については、http ://www.cplusplus.com/doc/tutorial/classes/ をご覧ください。
  2. (double)this->athis->aこれから行う計算では、除算を行うときに 3.141519 のような適切な数を取得できるように、倍精度にしたいと考えています。これを行うcastには double に変換します。基本的には、tempa に格納する前に整数をメモリ内の double に変換するようにコンパイラに指示します。データ型について詳しくはこちらをご覧ください: http://www.cplusplus.com/doc/tutorial/variables/型キャストについて詳しくはこちらをご覧ください: http://www.cplusplus.com/doc/tutorial/typecasting/
  3. double tempa =ここで、2 からの新しい double 値を、除算に使用できる一時的な値 tempa に割り当てます。

cplusplus.com のチュートリアルに従うのが少し難しい場合は、http: //www.cprogramming.com/tutorial/c++-tutorial.html で試してみると、少し読みやすくなります。

于 2012-07-20T04:06:53.740 に答える