C++におけるオブジェクト&クラスの深い理解
相手は何ですか
何事も一つの対象で、つまり伝説の万物はすべて対象です。
オブジェクトの構成:データ:記述対象の属性 関数:オブジェクトの挙動を説明し、外部の情報に従って対応する動作を行うコード は、同じ属性と行為を有するオブジェクトをクラスとして抽象化する 。類は対象の抽象 です。オブジェクトはクラスの特例です。
プロセスvsオブジェクト指向
プロセスに向かって
プロセスに向けたデザイン:は機能をめぐって、一つの関数で機能を実現します。 プログラム=アルゴリズム+データ構造 アルゴリズムとデータ構造は互いに独立して、別々に設計されている。
対象に向ける
対象向けのデザイン:は、アルゴリズムとデータを一つのオブジェクトにカプセル化する 。設計に必要な歌人類と対象 は、関連するオブジェクトにメッセージを送信する 。オブジェクト=アルゴリズム+データ構造 プログラム=オブジェクト*n+メッセージ
何がクラスですか
C+++においては、クラスでオブジェクトを記述し、クラスはユーザ固有のデータタイプであり、このタイプのデータは一定の行動能力、すなわちクラスに記述された方法を有している。一般的に、1つのクラスの定義は、2つの部分のコンテンツ、1つはクラスの属性、2つはこのクラスの所有する方法である。
クラスの書式
書式:
main.cpp:
num:1
name:Little white
gender:f
クラスのメンバー関数
クラスのメンバー関数はクラスのメンバーです。
注:一つのクラスにメンバー関数が含まれていないと、C言語の構造体と同じです。
関数アクセス権限
一般的なアプローチ:外部から呼び出しが必要なメンバー関数はpublicとして指定されています。これらはクラスの対外インターフェースです。
プライベートメンバ関数は、クラス内の他のメンバー関数によってのみ呼び出され、クラス外で呼び出されてはいけません。メンバー関数は、クラス内の任意のメンバー(プライベートおよびパブリックを含む)にアクセスしてもよく、このスコープ内で有効なデータを参照することができます。
メンバー関数のパーミッションを呼び出す: prvate:プライベートの public:公有の protected:保護された
訪問先のメンバーの3つの方法:は、オブジェクト名とメンバー演算子を介してオブジェクト内のメンバ にアクセスする。オブジェクトを指すポインタを介して、オブジェクト内のメンバ にアクセスする。オブジェクトの参照変数を介してオブジェクトのメンバーにアクセスする
方法1
オブジェクトのメンバーには、オブジェクト名とメンバー演算子を介してアクセスします。
Timeクラス:
6:6:6
方法2
オブジェクトへのポインタを通して、オブジェクトのメンバーにアクセスします。
Timeクラス:
6:6:6
6:6:6
方法3
オブジェクトの参照変数を通じて、オブジェクトのメンバーにアクセスします。
参照変数は同じセグメントの記憶手段を占めています。実際にはそれらは同じオブジェクトです。
Timeクラス:
6:6:6
inlineメンバー関数
内蔵関数を使うとコンパイルプロセスに影響があります。内蔵関数を使うと運転時間が節約できますが、ターゲットプログラムの長さが増加します。
内蔵関数:は、一般的に小規模で頻繁に使用される関数のみを内蔵関数 として宣言します。内蔵関数には、循環文やswitch文などの複雑な制御文が含まれてはいけません。 は関数に対してinline声明をしていますが、プログラム設計者はコンパイルシステムに対して提案しています。
例:
ここでC++中のオブジェクト&クラスについての記事を紹介します。C++オブジェクト&クラスに関するものがもっと多いので、以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。
何事も一つの対象で、つまり伝説の万物はすべて対象です。
オブジェクトの構成:
プロセスに向かって
プロセスに向けたデザイン:
対象向けのデザイン:
C+++においては、クラスでオブジェクトを記述し、クラスはユーザ固有のデータタイプであり、このタイプのデータは一定の行動能力、すなわちクラスに記述された方法を有している。一般的に、1つのクラスの定義は、2つの部分のコンテンツ、1つはクラスの属性、2つはこのクラスの所有する方法である。
クラスの書式
書式:
class
{
public:
//
private:
//
};
例:main.cpp:
#include "Student.h"
using namespace std;
int main() {
Student student1(1, "Little white", 'f');
student1.display();
return 0;
}
Student.cpp:
#include "Student.h"
#include <iostream>
using namespace std;
Student::Student(int n, string p, char g) {
num = n;
name = p;
gender = g;
}
void Student::display() {
cout << "num: " << num << endl;
cout << "name: " << name << endl;
cout << "gender: " << gender << endl;
}
Student.h:
#ifndef PROJECT1_STUDENT_H
#define PROJECT1_STUDENT_H
#include <string>
using namespace std;
class Student {
private: //
int num; //
string name; //
char gender; //
public:
Student(int num, string name, char gender);
void display();
};
#endif //PROJECT1_STUDENT_H
出力結果:num:1
name:Little white
gender:f
クラスのメンバー関数
クラスのメンバー関数はクラスのメンバーです。
注:一つのクラスにメンバー関数が含まれていないと、C言語の構造体と同じです。
関数アクセス権限
一般的なアプローチ:外部から呼び出しが必要なメンバー関数はpublicとして指定されています。これらはクラスの対外インターフェースです。
プライベートメンバ関数は、クラス内の他のメンバー関数によってのみ呼び出され、クラス外で呼び出されてはいけません。メンバー関数は、クラス内の任意のメンバー(プライベートおよびパブリックを含む)にアクセスしてもよく、このスコープ内で有効なデータを参照することができます。
メンバー関数のパーミッションを呼び出す:
オブジェクトのメンバーには、オブジェクト名とメンバー演算子を介してアクセスします。
Timeクラス:
#ifndef PROJECT1_TIME_H
#define PROJECT1_TIME_H
class Time {
private:
int hour;
int minute;
int second;
public:
void set_time(int h, int m, int s);
void show_time();
};
#endif //PROJECT1_TIME_H
メール:
int main() {
Time time;
time.set_time(6, 6, 6);
time.show_time();
return 0;
}
出力結果:6:6:6
方法2
オブジェクトへのポインタを通して、オブジェクトのメンバーにアクセスします。
Timeクラス:
#ifndef PROJECT1_TIME_H
#define PROJECT1_TIME_H
class Time {
private:
int hour;
int minute;
int second;
public:
void set_time(int h, int m, int s);
void show_time();
};
#endif //PROJECT1_TIME_H
mian:
int main() {
Time time; // time
time.set_time(6, 6, 6); //
Time *p = &time; // , time
p->show_time();
(*p).show_time();
return 0;
}
出力結果:6:6:6
6:6:6
方法3
オブジェクトの参照変数を通じて、オブジェクトのメンバーにアクセスします。
参照変数は同じセグメントの記憶手段を占めています。実際にはそれらは同じオブジェクトです。
Timeクラス:
#ifndef PROJECT1_TIME_H
#define PROJECT1_TIME_H
class Time {
private:
int hour;
int minute;
int second;
public:
void set_time(int h, int m, int s);
void show_time();
};
#endif //PROJECT1_TIME_H
mian:
int main() {
Time time1; // time
time1.set_time(6, 6, 6); //
Time &time2 = time1;
time2.show_time();
return 0;
}
出力結果:6:6:6
inlineメンバー関数
内蔵関数を使うとコンパイルプロセスに影響があります。内蔵関数を使うと運転時間が節約できますが、ターゲットプログラムの長さが増加します。
内蔵関数:
# include <iostream>
using namespace std;
inline int max(int, int, int);
int main() {
int i = 10, j = 20, k = 40, m;
m = max(i, j, k);
cout << "max= " << m << endl;
return 0;
}
inline int max(int a, int b, int c){
a = b > a ? b : a;
a = c > a ? c : a;
return a;
}
締め括りをつけるここでC++中のオブジェクト&クラスについての記事を紹介します。C++オブジェクト&クラスに関するものがもっと多いので、以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。