C ++では、クラスを使用して独自のデータ型を定義できます。では、独自のデータ型を理解するにはどうすればよいでしょうか。たとえば、int、float、char ...など、すべてデータ型である一般的なものです。次に、たとえば、時、分、秒、およびを含むclockというデータ型を定義します。を表示できれば、クラスを使用して独自のデータ型クロックを定義できます。
次のように定義されます
class clock {
public:
void setime(int hour, int minute, int second);
void showtime();
clock(int newh, int newm, int news);//构造函数
clock();//默认构造函数
private:
int hour;
int minute;
int second;
};
class:宣言クラスのキーワード、宣言クラスの基本形式。
時計:クラス名。時間、分、秒を意味します。
public、private:クラス内のメンバー属性を示します。publicは、クラスメンバー属性がパブリックであり、クラスの外部からアクセスできることを示します。特定のアクセス形式は、クラス名です。メンバー名。クラスのメンバーは次のようになります。データまたは関数名のいずれか、たとえば、データ型がクロックで、アクセス形式がtime.setime()
privateであるsetime関数に時間内にアクセスしたい:これはクラスのプライベートメンバーであり、アクセスできませんクラス外ですが、メンバー内でアクセスできます。
実際、保護された属性メンバーもあります。これはprivateに似ていますが、いくつかの点でわずかに異なります。これについては、後の記事で紹介します。
コンストラクター:デフォルトのコンストラクターと自分で定義したコンストラクターが含まれています。コンストラクターの機能は、privateのメンバーなどのメンバーを初期化することです。構築形式はクラス名(パラメーター)であり、コンストラクターは戻り値を持つことができません。上記の時計を例にとると、コンストラクターの形式は次のとおりです。
clock(int newh, int newm, int news);//构造函数
clock();//默认构造函数
関数定義:クラス内の関数メンバーを定義した後、関数はクラス外またはクラス内で定義できます。定義メソッドは、戻り値タイプクラス名:関数名(パラメーター)です。上記のshowtime関数を例として取り上げます。 。定義の方法は
void clock::showtime()
{
cout << "time" << " is " << hour << " : " << minute << " : " << minute << endl;
}
クラスの定義とコンストラクターの役割を理解しやすくするための例を次に示します。クロッククラスを定義して2つの異なる方法で初期化し、初期化されたデータを出力するだけです。完全なコードは次のとおりです。
# include <iostream>
# include <string>
# include <vector>
using namespace std;
class clock {
public:
void setime(int hour, int minute, int second);
void showtime();
clock(int newh, int newm, int news);//构造函数
clock();//默认构造函数
private:
int hour;
int minute;
int second;
};
void clock::setime(int newhour, int newminute, int newsecond)
{
hour = newhour;
minute = newminute;
second = newsecond;
}
void clock::showtime()
{
cout << "time" << " is " << hour << " : " << minute << " : " << minute << endl;
}
clock::clock(int newh, int newm, int news):hour(newh),minute(newm),second(news)
{
//初始化列表,对象进行简单的初始化时可以采用此方式,可以优先执行初始化列表从而提高运行的速度
}
clock::clock():hour(0),minute(0),second(0) {
}
int main()
{
/*clock time;*/
//time.setime(16, 41, 35);
//time.showtime();
//默认构造函数
clock time1;
time1.showtime();
//构造函数初始化
clock time2(9, 27, 6);
time2.showtime();
}
上記で使用した初期化リストは、対応する変数に値を割り当てるだけなので、実際にはクイック初期化の形式です。関数本体に代入ステートメントを書き込むのと同じで、実行結果を図に示します。
上記は、単純なクラスの定義とコンストラクターの使用法です。