小白學習老九君C 筆記 10 使用類建立物件

2021-09-27 09:22:37 字數 4366 閱讀 4797

棧記憶體中建立:類似宣告變數

自定義型別名 物件名(引數列表);

student stu(); 相等 student stu;

在堆記憶體中建立:需要new關鍵字

student* p_stu1 = new student();

不要使用auto* p_stu3 = new student();大型專案會編譯時間過長問題

//c語言習慣

for (int i = 0; i < cards.size(); i++)

cout << endl;

*/

//c++習慣 使用迭代器

for (vector::const_iterator iter = cards.begin(); iter != cards.end(); iter++)

cout << endl;

//c++11標準

for(auto iter = cards.begin(); iter != cards.end(); iter++)

cout << endl;

//c++11另外一種寫法,for區間遍歷

for (auto card:cards)

cout << endl;

//使用演算法方式將容器內容複製到cout繫結的迭代器中,需要新增標頭檔案

//#include//#includecopy(cards.cbegin(), cards.cend(), ostream_iterator(cout, ","));

cout << endl;

//普通青年做for迴圈

bool landower::iscontains(int cardnum)

return false;

}}

//使用算查詢

vector::iterator iter = find(surpluscards.begin(), surpluscards.end(), cardnum);

if (iter == surpluscards.end())

return true;

或者:

vector::iterator iter = find(surpluscards.begin(), surpluscards.end(), cardnum);

return iter == surpluscards.end();

詳細描述

//普通青年做法刪除

for (auto iter = cardvec.begin(); iter != cardvec.end();) 

else

}

//演算法刪除

vector::iterator iter = find(cardvec.begin(), cardvec.end(), card);

if (iter != cardvec.end())

main.cpp檔案

#include#include#include "class11.h"

using namespace std;

int main()

class11.**件

#pragma once

#include#include#include#include#includeusing namespace std;

class landower

void setname(string val)

string get***()

void set***(string val)

int getgod()

void setgod(int val)

long getexp()

void setexp(int val)

void touchcard(int cardcount);//摸牌

void showinfo();//

void initcards();//初始化packcards, surpluscards, currcards

void showcards(const vector&); //顯示牌面

private:

string m_name;

string m_***;

int m_god;

long m_exp;

vectorcardsvec;//當前玩家手牌陣列

vectorsurpluscards;//摸牌後桌面剩餘的牌

vectorpackcards;//預設的一副牌,從1-54

vectorcurrcards;//當前手牌

bool iscontains(int cardnum);//剩餘牌集合中是否包含cardnum

void deletecards(vector&, int); //刪除集合中數字

string getcolor(int);//獲得花色

string getvalue(int);//獲得牌面

};

class11.cpp檔案(函式具體實現)

#include "class11.h"

#include#includelandower::landower()

void landower::touchcard(int cardcount)

else

} cout << "地主摸牌,當前手牌如下:" << endl;

showcards(currcards);

cout << "地主摸牌後,剩餘手牌如下:" << endl;

showcards(surpluscards);

}void landower::deletecards(vector& cardvec, int card)

// else

//}//使用演算法刪除

vector::iterator iter = find(cardvec.begin(), cardvec.end(), card);

if (iter != cardvec.end()) }

bool landower::iscontains(int cardnum)

// return false;

//}//使用演算法查詢

vector::iterator iter = find(surpluscards.begin(), surpluscards.end(), cardnum);

/*if (iter == surpluscards.end())

return true;*/

return iter != surpluscards.end();

}landower::landower(string name) :m_name(name)

landower::landower(string name, string ***, int exp, long god): m_name(name), m_***(***), m_exp(exp), m_god(god)

void landower::showcards(const vector& cards)

cout << endl;

*/ //c++習慣 使用迭代器

//for (vector::const_iterator iter = cards.begin(); iter != cards.end(); iter++)

// //cout << endl;

c++11標準

//for(auto iter = cards.begin(); iter != cards.end(); iter++)

// //cout << endl;

//c++11另外一種寫法,for區間遍歷

for (auto card:cards)

void landower::showinfo()

void landower::initcards()//初始化packcards, surpluscards, currcards

currcards.clear();

}string landower::getcolor(int card)

; return colors[(card - 1) / 13];//card不是下標,所以要 -1

}string landower::getvalue(int card)

; return values[(card - 1) % 13];

}landower::~landower()

小白學習老九君C 筆記 4 string函式

這裡是引用 vector與string本質上都是stl內部的程式,是可以用insert來轉換的 include c 標準庫 using namespace std int main include stdc h c 標準庫 vs執行時候沒有找到c 標準庫,所以自己做了個標準庫檔案 標準庫標頭檔案內容...

C 學習筆記(九) 類的建構函式

建構函式 是特殊的成員函式,只要建立類型別的新物件,都要執行建構函式。建構函式的工作是保證每個物件的資料成員具有合適的初始值。如下面 class sales item 建構函式的一些特性 和類的名字一樣,沒有返回值,可以有形參,也可以沒有形參 建構函式的過載 但有個問題是,我們如何知道應該定義哪個或...

C 學習筆記九 類的定義與初始化

c 中,可以使用類來定義自己的資料型別,那麼如和理解自己的資料型別?比如我們常見的如 int float,char 等等諸如此類,這都是一種資料型別,那麼比如我自己想定義乙個叫 clock 的資料型別,裡面包含小時,分鐘,秒,並可以顯示出來,那麼我們就可以使用類來定義自己的資料型別 clock。定義...