Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Cpp chap.10
Search
Iseya
April 08, 2018
Programming
17
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cpp chap.10
Iseya
April 08, 2018
More Decks by Iseya
See All by Iseya
0章 開発環境の導入(C/C++入門)
hoge_piyo
0
14
Other Decks in Programming
See All in Programming
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
残高管理から台帳サービスへの進化
artoy
1
200
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
560
ジョジョの世界をXRで再現する
mofurune
0
160
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.2k
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
280
golang-bob.pdf
iwatsukayura
0
130
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
460
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
220
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Technical Leadership for Architectural Decision Making
baasie
3
600
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
The Pragmatic Product Professional
lauravandoore
37
7.5k
A Soul's Torment
seathinner
8
3.8k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
Are puppies a ranking factor?
jonoalderson
2
4.1k
Abbi's Birthday
coloredviolet
4
10k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Transcript
10章 クラスの基本 1
クラスの概要 2 ・クラスとは いろいろな変数や関数をオブジェクトとしてまとめる事ができるもの。 C++のように、オブジェクトを用いるプログラム言語のことを、 オブジェクト指向の言語ということもある。 他には、Java や Objective-C などがある。
・クラスの使い方 クラスを作り、オブジェクトを作って、各メンバにアクセスする。 例えば、Statusクラスを作って、mob1,mob2 というオブジェクトを作り、 mob1やmob2のオブジェクトの中のstrongという変数だったり、 showStrong() という関数にアクセスする。 Q.構造体は? A.知らない子ですね ※クラス ≠ オブジェクト ※クラス ≒ 型
クラスの宣言 3 class クラス名{ アクセス指定子: 変数や関数の宣言 ︙ }; ・クラスの宣言 ・メンバ関数の定義(クラスの
外) 型名 クラス名::メンバ関数名(引数){ 「処理」 } ※アクセス指定子は後述 ・説明 クラス内で宣言や定義されたものを メンバという。 また、その中で定義や宣言された 変数…メンバ変数 関数…メンバ関数 という。 メンバ ・メンバ関数の定義(クラスの 中) 型名 メンバ関数名(引数){ 「処理」 } ※クラスの中で定義する場合、普通の関数と同じ ※クラスの中で定義した関数は、強制的にインライン関数になる。 ← ; を忘れない ↓通常は、こっちを使う
メンバへのアクセス 4 ・構文 オブジェクト名 .メンバ名 #include<iostream> using namespace std; class
Status { public: int strong; void showStrong(); }; void Status::showStrong() { cout << "私の戦闘力は" << strong << endl; } int main() { Status freeza; freeza.strong = 530000; freeza.showStrong(); return 0; } 私の戦闘力は530000↓ ・実行結果 ←オブジェクトの作成 ←メンバ変数へのアクセス ←メンバ関数へのアクセス ←アクセス指定子はpublicにしておく ←メンバ変数の定義 ←メンバ関数の宣言 メンバ関数の定義 ※この.を ドット演算子という
アクセス指定子 5 ・アクセス指定子 これをつけることによって、 クラスの中からしか、アクセスできないメンバと クラスの外からでも、アクセスできる メンバを作成できる。 ・アクセス指定子の種類 public …
クラスの外からでもメンバに「アクセス可能」 private … そのクラスの外からメンバへの「アクセス不可」 「アクセス可能」… オブジェクト名.メンバ というのが行える。 「アクセス不可」… オブジェクト名.メンバ というのが行えない。 ※public「公共の」 private「私有の」
アクセス指定子の利用① 6 #include<iostream> using namespace std; class square { private:
int tate; int yoko; public: int getArea() { return tate*yoko; }; void setTateYoko(int, int); }; void square::setTateYoko(int t, int y) { if (t > 0 && y > 0) { tate = t; yoko = y; } else cout << "error!!" << endl; } int main() { square box; box.setTateYoko(10, 5); cout << "面積:" << box.getArea() << endl; box.setTateYoko(-1, 3); cout << "面積:" << box.getArea() << endl; return 0; } 面積を計算し、 ↓それを返す ・説明 縦と横の長さは正の値しかとらないので、 負の値があるとき、"error!!"と表示。 ・実行結果 面積:50 error!! 面積:50 負の数があるので、 初期化を行わない Ⅰ Ⅱ
アクセス指定子の利用② 7 ・カプセル化 変数(データ)や関数(機能)などを、ひとまとめにして、 アクセス指定子を用いてメンバを保護すること。 ・アクセス指定子の設定 変数 … private 関数
… public に設定することが多い。 ・アクセス指定子の省略 すべて private のメンバになる。
コンストラクタの基本① 8 ・コンストラクタ オブジェクトが作成されると自動的に呼び出されるメンバ関数。 オブジェクトの作成と同時に呼び出されることから、 普通の関数と違い、戻り値を持たない(voidとすら書かない)。 メンバ変数の初期化を行うためによく用いられる。 ・構文(宣言と定義が別々) class クラス名{
public: ︙ クラス名(引数の型); ︙ }; クラス名::クラス名(引数){ 処理 } ←public でないと呼び出せない ↓この関数がコンストラクタ 戻り値の型なし ・構文(宣言と定義を同時) class クラス名{ public: ︙ クラス名(引数){ 処理 }; ︙ }; ※こっちの場合、 コンストラクタはインライン関数になる ※引数はなくても良い。