クラスベース
10667 ワード
アクセス指定子
3つのアクセスフラグ
同じクラスのメンバー関数に限定されます.
直接クラス外からアクセスできません->クラス内でのみ使用できます.
クラス自体と継承されたサブクラスのみが許可されます.
他のすべてのクラスを許可します.
教室の外でも直接訪問できます.
クラス定義でアクセス指定子を指定すると、新しいアクセス指定子が表示されるまで、すべてのメンバーに対応するアクセス権が与えられます.
class test {
int testInt; //private로 선언됨 -> 디폴트 접근 지정 = private이기 때문
public:
float testFloat;
double testFunction();
}
メンバーのアクセス権の設定
クラス内のメンバー変数
private
またはprotected
に設定します.これは、メンバー変数を誤った変更から保護するためです.
=>メンバー関数を使用してメンバー変数を変更する場合によく使用されます.(ビジター関数を参照)
クラスのメンバー関数
public
に設定します.クラス外でアクセスするには、メンバー関数がオブジェクトが使用可能である必要があります.
アクセス者関数
アクセス者関数:public
のメンバー関数を持ち、クラス内のメンバー変数へのアクセスを支援する機能を提供します.
->一般的にGet関数とSet関数によって実現されます.
=>上の2つのアクセス者関数はfunction nameの接頭辞として使用されます.
// 클래스 선언부
class shape {
private:
int height;
int width;
public:
int GetHeight();
int GetWidth();
void SetHeight(int userHeight);
void SetWidth(int userWidth);
}
// 클래스 구현부
int shape::GetHeight() {
return height;
}
int shape::GetWidth() {
return width;
}
void shape::SetHeight(int userHeight) {
height = userHeight;
}
void shape::SetWidth(int userWidth) {
width = userWidth;
}
アクセス者関数の利点
->ビジター関数は必要なものを作成するだけです.
friend関数とfriendクラス
friend関数
クラスのメンバー関数でなくても、private
、protected
のメンバーにアクセスできます.
->アクセスしたいclass宣言帳にfriend
キーワードを記入し、関数プロトタイプを記入します.
friendクラス
特定のレベルのprivate
protected
メンバーのレベルに近づくことができます.
->アクセスしたいclass宣言帳にfriend class
とclass nameを記入します.class Circle {
friend void GetArea(); // friend 함수
friend class shape; // friend 클래스
}
class shape {
private:
int Height;
int Width;
}
//main
void GetArea() {
//do something..
}
friend
は、ほとんどの場合、特別な場合にメンバー変数にアクセスできる例外ルールです.
メンバー関数のこのポインタ
このポインタ
メンバー関数を持つオブジェクトへのポインタ.オブジェクトのアドレスを格納します.
これは、開発者が宣言した変数ではなく、クラスのメンバー関数でのみ使用できます.
コンパイラが宣言する変数は、コンパイラが宣言をデフォルトで挿入するパラメータです.class Student {
int stdNum;
int stdName;
public:
void SetStdNum(int stdNum) {
this->stdNum = stdNum //첫 번째는 class꺼, 두 번째는 매개변수
}
}
/* this만 따로 출력도 가능하다. */
各オブジェクトのthis
は、他のオブジェクトのthis
とは異なります.
これが役に立つなら
class Circle {
friend void GetArea(); // friend 함수
friend class shape; // friend 클래스
}
class shape {
private:
int Height;
int Width;
}
//main
void GetArea() {
//do something..
}
このポインタ
メンバー関数を持つオブジェクトへのポインタ.オブジェクトのアドレスを格納します.
これは、開発者が宣言した変数ではなく、クラスのメンバー関数でのみ使用できます.
コンパイラが宣言する変数は、コンパイラが宣言をデフォルトで挿入するパラメータです.
class Student {
int stdNum;
int stdName;
public:
void SetStdNum(int stdNum) {
this->stdNum = stdNum //첫 번째는 class꺼, 두 번째는 매개변수
}
}
/* this만 따로 출력도 가능하다. */
各オブジェクトのthis
は、他のオブジェクトのthis
とは異なります.これが役に立つなら
分割コンパイル
理想的なC++プログラムの作成
クラスをヘッダファイルとcppファイルに分けて作成します.
.h
)に保存->클래스 이름.h
클래스 이름.cpp
ただし、類実施部はinclude
宣言を使用すべきである.これにより、クラスを再使用できます.
繰り返しincludeを阻止する方法
条件付きコンパイル文で解決します.
#define
を使用して構成部品を作成します.#ifndef
を追加する.#endif
を追加します.// shape.h
// 심볼 이름은 컴파일 상수와의 충돌을 방지하기 위해, 클래스 이름으로 사용하는 것이 좋다.
#ifndef SHAPE_H
#define SHAPE_H
class shape {
// declaration member function & variable...
}
#endif
//main.cpp
#include <iostream>
using namespace std;
#include "shape.h"
#include "shape.h" // 조건 컴파일문으로 인해, 여러 번 include해도 문제가 발생하지 않는다.
int main() {
//do something..
}
shape.hにSHAPE Hがない場合はdefineと宣言し、ある場合はendifに直接ジャンプします.Reference
この問題について(クラスベース), 我々は、より多くの情報をここで見つけました https://velog.io/@podong/클래스-기초テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol