オブジェクトベースプログラミングとオブジェクト向けプログラミング(エクスプレッション計算器3)

2426 ワード

計算機のgithubダウンロードアドレス:https://github.com/ljian1992/calculator
オブジェクトベースプログラミングとオブジェクト向けプログラミング
我々の最終目的は,C++を用いてオブジェクト向けの式計算機を設計することであるため,オブジェクトベースのプログラミングとオブジェクト向けのプログラミングとは何かを明らかにする必要がある.それを明らかにするには、まず値言語とは何か、対象の意味とは何かを理解しなければならない.
値の意味:オブジェクトのコピーは元のオブジェクトとは無関係で、コピー後は元のオブジェクトとは関係を離れ、互いに影響しません.このコピーは深いコピーと呼ばれます.コピー後は関係を離れ、コピー時にオブジェクトにメモリ領域を割り当てるだけでよい.場合によっては資源の浪費になる
 
値の意味の例
class

Test { private
: int *
pNum_; public
: Test(int num) { pNum_ = new int(num); };   Test(const Test&
src) { pNum_ = new int(*(src.pNum_));//再スタックスペースでメモリを申請し、コピーして元のオブジェクトと関係を離れる}int*GetpNum()const{return pNum_;}   };   int main(void
) { Test t1(3
); Test t2(t1);//コピー後t 2はt 1とは関係がない
std::cout << hex << t1.GetpNum() <<
std::endl; std::cout << hex << t2.GetpNum() << std::endl;   return 0
; }

オブジェクトの意味:1.オブジェクトコピーは禁止されています
               2.オブジェクトコピーを使用すると、オブジェクトとコピーされたオブジェクトの間でリソースを共有できます.
コピー後、オブジェクトとコピーされたオブジェクトの間に関連があります.これは、コピー中にポインタまたは参照のみをコピーする必要があります.これにより、オブジェクトとコピーされたオブジェクトが同じリソースを指します.このコピーは浅いコピーと呼ばれます.もちろんこれは資源の解放に一定の困難をもたらしたが、RAII技術がこの問題を解決した.
        Tips:
              1.C++コンパイラがデフォルトで提供するコピーコンストラクタは、オブジェクトの意味です.
              2.JAVAは純粋にオブジェクト向けの言語であるため、すべてオブジェクトの意味であり、これはC++との違いの一つである
 
オブジェクトの意味の例
class

Test { private
: int *
pNum_; public
: Test(int num) { pNum_ = new int(num); };   Test(const Test&
src){pNum_=src.pNum_;//は同じメモリ領域を指し、連絡があり、}int*GetpNum()const{return pNum_;}   };   int main(void
) { Test t1(3
); Test t2(t1);//コピー後、t 2はt 1に関連付けられる
std::cout << hex << t1.GetpNum() <<
std::endl; std::cout << hex << t2.GetpNum() << std::endl;   return 0
; }

オブジェクトベースプログラミング:値言語ベース
オブジェクト向けプログラミング:オブジェクト言語ベース