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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
The Rails Doctrine Decade
koic
2
590
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
150
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
AWSに止められる覚悟してますか?
morizo_1984
2
540
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
0
250
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
430
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
Event is what happens
moro
2
790
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
970
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
440
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
Music & Morning Musume
bryan
48
7.4k
Optimizing for Happiness
mojombo
378
71k
The browser strikes back
jonoalderson
0
1.8k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
990
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
WCS-LA-2024
lcolladotor
0
890
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: ︙ クラス名(引数){ 処理 }; ︙ }; ※こっちの場合、 コンストラクタはインライン関数になる ※引数はなくても良い。