c言語入門からc++使用達人:C++などを深く学ぶ(一)
第三章類
第1節メンバー関数、オブジェクトコピー、プライベートメンバー
1.総説クラスは、独自に定義したデータ型(新しいタイプ) です.クラスを設計する際に考慮すべき角度 は設計と実現者の角度から を考慮する.利用者の立場から考える .親、子 2.クラスベースクラスは、ユーザーが自分で定義したデータ型であり、クラスをネーミングスペースとして想像し、荷物(メンバー関数、メンバー変数) を包んでいる.クラスの構成:メンバー変数、メンバー関数(特殊なメンバー関数がたくさんありますが、後で説明します) がクラスメンバーにアクセスするとき、クラスオブジェクトである場合、オブジェクト名を使用します.メンバー名はメンバーにアクセスします.オブジェクトへのポインタの場合は、ポインタ名->メンバー名を使用してメンバー にアクセスします. publicメンバーは対外的なインタフェースを提供し、外部に露出し、外部呼び出しを提供し、privateメンバーは各種の実装クラス機能の詳細な方法を提供するが、使用者に暴露しないで、外部はこれらのメンバー を使用することができない. structはメンバーのデフォルトがpublicのclassであり、struct A{}である.classメンバーのデフォルトはプライベート、class A{};==>struct A{}はclass A{public:} に等しい
3.メンバー関数
完全な例 Time.h Time.cpp main.cpp CMakeLists.txt
4.オブジェクトのコピーオブジェクトはコピー可能であるが、デフォルトでは、この種類のオブジェクトのコピーは、メンバー変数ごとに ずつコピーされる. Timeクラスで適切な「付与演算子」を定義すると、オブジェクトのこのコピー を制御できます.
5.プライベートメンバー Time.h
-Time.cpp
第1節メンバー関数、オブジェクトコピー、プライベートメンバー
1.総説
#include
using namespace std;
class student{
public:
int num;
};
int main() {
student someone;//
someone.num =100;
cout << someone.num << endl;
student *pstu;
pstu = &someone;
pstu->num = 88;
cout << pstu->num << endl;
return 0;
}
3.メンバー関数
完全な例
//
// Created by felaim on 2020/5/26.
//
#ifndef LESSION_PART_TWO_TIME_H
#define LESSION_PART_TWO_TIME_H
class Time {
public:
int Hour;
int Minute;
int Second;
void initTime(int tmphour, int tmpmin, int tmpsec);
};
#endif //LESSION_PART_TWO_TIME_H
//
// Created by felaim on 2020/5/26.
//
#include "Time.h"
// initTime
// :: , initTime Time
void Time::initTime(int tmphour, int tmpmin, int tmpsec) {
//
// ,
Hour = tmphour;
Minute = tmpmin;
Second = tmpsec;
}
#include
#include "Time.h"
using namespace std;
int main() {
Time mytime;
mytime.initTime(11, 14, 45);
//mytime: 11:14:45
cout << "mytime: " << mytime.Hour << ":" << mytime.Minute << ":" << mytime.Second << endl;
return 0;
}
cmake_minimum_required(VERSION 3.14)
project(lession_part_two)
set(CMAKE_CXX_STANDARD 11)
include_directories(./include/)
add_executable(lession_part_two main.cpp ./source/Time.cpp)
4.オブジェクトのコピー
#include
#include "Time.h"
using namespace std;
int main() {
Time myTime;
myTime.initTime(11, 14, 45);
//mytime: 11:14:45
cout << "myTime: " << myTime.Hour << ":" << myTime.Minute << ":" << myTime.Second << endl;
// ,
Time myTime0 = myTime;
Time myTime1{myTime};
Time myTime2(myTime);
Time myTime3 = {myTime};
myTime3.Hour = 12;
cout << "myTime: " << myTime.Hour << ":" << myTime.Minute << ":" << myTime.Second << endl;
cout << "myTime3: " << myTime3.Hour << ":" << myTime3.Minute << ":" << myTime3.Second << endl;
return 0;
}
5.プライベートメンバー
//
// Created by felaim on 2020/5/26.
//
#ifndef LESSION_PART_TWO_TIME_H
#define LESSION_PART_TWO_TIME_H
class Time {
private:
//
//
int Millisecond;//
void initMillTime(int mls);
public:
int Hour;
int Minute;
int Second;
void initTime(int tmphour, int tmpmin, int tmpsec);
};
#endif //LESSION_PART_TWO_TIME_H
-Time.cpp
//
// Created by felaim on 2020/5/26.
//
#include "Time.h"
// initTime
// :: , initTime Time
void Time::initTime(int tmphour, int tmpmin, int tmpsec) {
//
// ,
Hour = tmphour;
Minute = tmpmin;
Second = tmpsec;
initMillTime(25);
}
void Time::initMillTime(int mls) {
Millisecond = mls; //
}