C++學習 類定義(一)

yuwanmuyoucumian發表於2020-10-07


前言

C++中,我們可以使用類定義自己的資料型別,用類來描述物件。

一、C++類的定義

C++中類的定義

calss 類的名稱
{
public:
//建構函式、成員函式
private:
//資料成員
}

在類的定義中public是公共的,可以直接被外部訪問或者呼叫,private是私有的,不能被外部訪問呼叫。

#include<iostream>
#include<string>

using namespace std;

class Person
{
public:
Person(const string &nm):name(nm)  //初始化
{
}

string getName() const
{
return name;
}

private:
string name;
};

int main()
{
Person a("bill";
a.getName()return 0;
}

在類中的成員函式能夠函式過載,可以使用別名來簡化類,顯示指定inline成員函式。

#include<iostream>
#include<string>

using namespace std;

class Screen
{
typedef string::size_type size; // 使用別名來簡化類名稱

public:
char get() const  
{
return contents[cursor];
}
char get(size r,size c) const  //這邊對函式進行過載
{
size roe = r*width;
return contents[row+c];
}

private:
string contents;
size curdor;
size height,eidth;
}

int main()
{
Screen a;
a.get();
a.get(2,8);
return 0;
}

當函式寫在class中,表示這個函式是一個行內函數,當然也可寫在class外面,那就是外聯函式,當函式寫在class外面的時候可以通過inline將其 變為行內函數。
例如:

lass Screen
{
typedef string::size_type size; // 使用別名來簡化類名稱

public:
char get() const  
{
return contents[cursor];
}
char get(size r,size c) const  //這邊對函式進行過載
{
size roe = r*width;
return contents[row+c];
}

private:
string contents;
size curdor;
size height,eidth;
}


//可以改成
class Screen
{
typedef string::size_type size; // 使用別名來簡化類名稱

public:
char get()  constchar get(size r,size c) constprivate:
string contents;
size curdor;
size height,eidth;
}

inline char Screen::getchar() const
{
return contents[cursor];
}
inline char Screen::getchar(size r,size c) const
{
size roe = r*width;
return contents[row+c];
}

如果類只有申明沒有定義,那麼就不能使用它的建立物件。
例如

class Screenint main()
{
Screen a;
return 0;
}
//這樣是不行的

但是這個他是可以定義一個指標或者一個引用

class Screenint main()
{
Screen *a;//這個指標指向這個型別
Screen &b;
return 0;
}

在類定義中,可以使用另一個類的指標。例如:

class Screen;
class Person
{
public:

private:
Screen *ptr; //ptr指向Screen
Person *a; //指向它自己
};

相關文章