Entries from 2019-01-01 to 1 year
さーてようやくinheritanceまできました!(またサボってました) inheritanceのやり方は、下記です。 class Account { //functions, members } class Saving_Account ; public Account { //functions, members } class Checking_Account ; public Account {…
Macでだるいのが不要アプリを削除する際に関連したファイルを消してくれないところ。 AppZapperをいつも使っていましたがApp StoreでインストールできるやつのほうがどのMacでも使えるなぁと思い。 下記を使ってみようと思ったのでメモだけしておこう TrashM…
プログラム実行中にエラーが出てしまうと、その場で処理が停止してしまう。 処理をとりあえず?正常に終了させるために、 異常処理を書いておく必要がある場合があります。 また、Pythonデフォルトのエラーメッセージを表示させるのではなく、 自分好みのメ…
Pythonのクラスで特徴的なのは初期化インスタンスくらいですかね〜。 def __init__() :メソッドがC++でいうようなコンストラクタになります。 アンダーバー2個続けないとダメです。 オーバーロードコンストラクタみたいに、 __init__()メソッドで引数の違う…
データサイエンスとかやるなら、これ必須やと思います。 整形するときにcsvとか開くやん、、 open/closeとメソッドはありますが、基本with openしておけば間違いないです。 上記だと、ブロックから抜けたら勝手にcloseしてくれるからです。 #ファイル書き込…
C言語でいうところの#includeですね。 pythonはheaderとかにせず、importして使う感じっす。 さっきの関数のコードを使い回し。 calc_main.py import calc_tax as c total = c.calc_tax(percent=10, reduction=1, price=1000) print (total) total = c.calc_…
関数 pythonの関数ですね〜 重要だと思ったのは、Pythonは関数のオーバーロードができないこと そのため、関数の定義側に、引数のデフォルト値を定義しておく ことで、引数の数が変化しても大丈夫。 あと、何故かデフォルト値を定義してしまったら、その後の…
個人的にPythonのfor文はわかりやすいような、クセがあるような感じがします。 if / elif / else else if は elifと書きます まあ、それだけですね、サンプルコードも省略しよっと(すみません) あえていうなら、 if 条件式: #処理 elif 条件式: #処理 else…
ディクショナリー キーとバリューを同時に格納することができる配列構造のオブジェクトやで〜 ディクショナリーは、{} で囲んで初期化します。 dict = {"key1" : "aaa", "key2" : "bbb", "key3": "ccc"} #参照 print(dict["key1"]) #aaa #要素の追加 dict["k…
タプル 簡単にいうとCでいうようなconstのリスト リスト内の値を外部から変えることはできない。 絶対に固定値をなんども使うことがあるのならば、リストを毎回作成するよりパフォーマンスが良い。 タプル作成の場合は、()で値を代入すること。 smp_tuple = …
リスト pythonはマイナスのインデックスも持てます。 [0] [1] [2] [3] 1 2 3 4 [-4][-3][-2][-1] 1,2,3,4が要素ね リストの操作 代表的なメソッドをメモ lst = [1,2,3,4] #参照 print(lst[1]) #2 #追加 lst.append(100) print (lst) #[1,2,3,4,100] #除去 ls…
ちょっと浮気してPythonです。 気になった部分だけメモします。 複数の行を1つの文として連結する ¥を使用すれば複数行にまたがったコードも論理的には一行となります。 また、{}, [], ()など括弧で囲まれた場合は複数行になったも問題なしです。 a = 1+2+ …
おいおい、ちょっと待って!オペレーターまでOverloadできんの!? 全く知りませんでした。 頻繁にそういう自作のオペレーターで色々するのなら、役に立つのかな、、、 まあ、つべこべ考えずにまずはコード。 クラスのMember内でオーバーロード sample.h cla…
C++はアサインメントのオペレータでさえ、オーバーロードできるんですね。。。 これ使う時がどんなときなのかというと、Shallow copyではなく、Deep copyが必要なとき。 (クラスのメンバにRawポインタがいる場合。デフォルトだとshallow copyになってしまう…
なんかこれはメモっておいたほうがよいと思ったのでメモ! Testクラスに、char *strというメンバ変数が存在する場合です。 #include <cstring> #include <XXX.h> //XXX.hがローカルにあることを前提 //no args constructor Test::Test() //nullptrで初期化 : str{nullptr} { </xxx.h></cstring>…
コンストラクタからようやく解放!(たぶん) というわけで、最後のMoveコンストラクタですが これはDeep Copyをせずにソースのオブジェクトをコピーせずに値を移動させちゃうようなコンストラクタです 基本的には、r-valueに対して有効と認識しています。(…
Deep Copying / Shallow Copying があるようです。 Shallow copyでCopy Constructorを使用した場合、ポインタを用いているとメモリ破壊が起こることがあります。 要は、Deep Copyingだとcopyされた変数のアドレスを別に保持します! class Shallow { private…
Copyコンストラクタの必要性がいまいちわかっていない。。。 クラスのメンバ達の値を新しいオブジェクトにコピーするって感じで合ってるのやら。。 とりあえず、Copyコンスラクタの定義です。 class Sample { private: char a {"wawawa"}; char b; char c; p…
コンストラクターにも色々ありまして、、、 前回メモしたコンストラクタは、実はちゃんと初期化しているのか!?と言われるとそうでもない、と。 ただ値をアサインしているだけとも言える。 そのため、initialization listをメモ。これはコードも減らせるし…
ほいほい、ついにコンストラクタとデストラクタ 簡単にいうとクラス内メンバの初期化を行ってくれる素晴らしいやつ。 種類があります 1. デフォルトコンストラクタ 2. ユーザー仕様のコンストラクタ 下記例は、2です。1を使う場合、クラス内にコンストラクタ…
さてさてGWは完全にサボってました。totally slacked off メーン! というわけで、再開していきます。 C++のコードってなんでhoge.hとか、hoge.cppとかに分かれているのかな〜ってのがようやくわかりました! たとえば、accout.hというaccountクラスの定義に…
さてさて、クラスに定義したメンバーのアクセスはどうするんでしょうか! Dotをつかう すでにオブジェクトがある場合、 Sample omanman; omanman.peropero; omanman.punipuni(69); *peropero変数とint型の引き数をもつpunipuni関数がSampleクラスにある場合…
さて、ようやくオブジェクト指向。 普段が化石言語なもので、なんかい学んでも忘れますが今回こそは/// クラス定義 class Sample { //atributes int int_sp; double double_sp; string st; // functions void print_int(int); void print_db(double); voi…
普通に変数の値を関数に渡す 関数が実際に渡された変数の値を変えないことが前提 そして渡す変数が比較的軽くてシンプルなもの(int, char, double, boolなど) ポインターを使って変数の値を関数に渡す 関数が実際に渡された変数の値を変えることが前提 渡…
type *function() と関数を定義すれば、C++でポインターを関数からreturnさせることが可能です。 int *sample_function( int *ptr1, int *ptr2) { if *ptr1 < *ptr2 return ptr1; else return ptr2; } みたいな感じです。 やっちゃいけないこと これ重要と思…
なんか変なタイトルになってしまいましたが、 C++はポインタに++したり--したりしていて意味不明すぎるので、 よくあるやつですよってことで 例をメモしておく。 例1 int main() { int array[] {1,2,3,4,5,-1}; int int_ptr {array}; // int_ptrの値が-1にな…
何回やっても覚えないのでメモ 右下のツールバーからIMEを右クリック プロパティを選択 詳細設定を選択 編集操作のキー設定で変更をクリック(Microsoft IMEがデフォルトで選択されているはず) キー: 英数 -> IMEオン キー: 無変換 -> IMEオフ をそれぞれ設…
arrayとpointerの関係は面白い。 面白いけどかなり混乱を招くので、メモしておく。 簡単に復習すると、array変数の名前に関しては配列の一番最初のアドレスを保持している。 ポインタ変数に関してはアドレス値を保持しているため、 array変数とarray変数を参…
たまに、どれだけのサイズを確保したらいいのか動作させるまで、わからない場合がある そんなときは変数サイズを動作時に確保してしまえばよいということである。 わかりやすい例が下記のコード size_t size{0}; double tmp_ptr {nullptr}; //ユーザーに変数…
初期化 C++ 11からは、nullptrが使える。 int *ptr {nullptr}; 上記の場合は、ポインタはどこのアドレスもポイント(参照)していません。 まあ、ポインタはとりあえず絶対初期化しましょうねって感じです。 (ゴミデータが厄介になるため) int test {100};…