姓名:張立斐 ? 學(xué)號:19020700001? ?學(xué)院:電子工程學(xué)院?
轉(zhuǎn)自:https://blog.csdn.net/lvliang2017232003/article/details/86087051
【嵌牛導(dǎo)讀】C++學(xué)習(xí)
【嵌牛鼻子】C++
【嵌牛提問】如何學(xué)習(xí)C++?
【嵌牛正文】
1.類對象的程序通過訪問公有成員函數(shù)(或友元函數(shù))來訪問對象的私有成員。(類方法可以訪問類的私有成員)
組成類接口的成員函數(shù)放在公有部分。
2.要創(chuàng)建類對象,可以聲明類變量,也可以使用new為類對象分配存儲空間??梢詫ο笞鳛楹瘮?shù)的參數(shù)和返回值,也可將對象賦值給另一個
3.ostream類中包含控制格式的成員函數(shù)setf(),可以修改輸出數(shù)據(jù)格式,統(tǒng)一格式。
std::cout.setf(std::ios_base::fixed, std::ios_base::floatfield)? //設(shè)置cout對象的一個標(biāo)記,命令cout使用定點表示法
std::count.precision(3);? //cout在使用定點表示法時顯示3為小數(shù)
std::ios_base::fmtflags orig=std::cout.setf(std::ios_base::fixed); //保留原始標(biāo)記
std::streamsize prec=std::cout.precision(3);//保留原始值
.................... std::count.precision(2);.................
std::cout.setf(orig, std::ios_base::floatfield);//重置舊格式
std::cout.precision(prec);
3.類的構(gòu)造函數(shù):構(gòu)造一個和類名相同的函數(shù),沒有返回類型,放在類聲明的公有部分。
使用構(gòu)造函數(shù)來初始化類對象??蓜?chuàng)建多個同名的構(gòu)造函數(shù),(重載,參數(shù)列表不同)
類的析構(gòu)函數(shù):類對象過期時,析構(gòu)函數(shù)將被自動調(diào)用。
//Stock是一個類名
構(gòu)造函數(shù):
Stock::Stock(const string &co="Error", int n=0, double pr=0.0);//所有參數(shù)為默認(rèn)值的構(gòu)造函數(shù)
Stock::Stock();? ? //沒有參數(shù)的默認(rèn)構(gòu)造函數(shù),只有沒有提供任何構(gòu)造函數(shù)時,編譯器提供默認(rèn)的構(gòu)造函數(shù)此時聲明Stock stock1; 有效
Stock::Stock(const std::string &co, long n, double pr){? ? ? ? }? //構(gòu)造函數(shù) 若提供了非默認(rèn)構(gòu)造函數(shù),聲明Stock stock1; 無效
//要創(chuàng)建對象,又不顯示初始化,必須自行定義一個不接受任何參數(shù)的默認(rèn)構(gòu)造函數(shù)
//用戶提供的默認(rèn)構(gòu)造函數(shù)通常給所有成員提供了隱式初始值
Stock first();? //這是一個返回Stock對象的函數(shù)
Stock second;? //調(diào)用隱式的構(gòu)造函數(shù),不用括號
析構(gòu)函數(shù) :
Stock::~Stock() { }? //析構(gòu)函數(shù)?
初始化類對象方法:
Stock stock1("NanoSmart", 12, 20.0);? //用構(gòu)造函數(shù)來初始化類對象 stock1法1
Stock stock2 = Stock("Assuing Obj", 2, 2.0); //用構(gòu)造函數(shù)來初始化類對象stock2法2
Stock *pstock= new Stock("Assuing Obj", 2, 2.0) ; //將初始化對象的地址賦給pstock
C++11列表化可以初始化對象Stock stock2={ "Assuing Obj", 2, 2.0 };? //可省略=
聲明類對象數(shù)組:
Stock mystuff[4];
初始化: Stock mystuff[4]={ Stock("Assuing Obj", 2, 2.0), Stock("ALEX ", 5, 6.0), Stock("Helenng Obj", 2, 2.0),Stock("Nihlyssuing Obj", 2, 2.0)};
4.const成員函數(shù)(函數(shù)不會修改調(diào)用對象)
類中聲明:void show() const;
定義:void Stock::show() const? {? }
5.this 指針設(shè)置為類方法調(diào)用它自己本身對象的地址。要引用整個調(diào)用對象則可用*this; 調(diào)用對象的成員函數(shù):this->show
6.類作用域中的常量:
class Bakbery{
private: enum {Months=12};? //這種方式聲明枚舉并不會創(chuàng)建類數(shù)據(jù)成員,即所有對象中不包含枚舉。在作用域為Bakbery類的? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //代碼中遇到Months,編譯器用12替代
(或)static const int Months=12;
...};
7.作用域內(nèi)的枚舉:
enum class egg {Small,Medium,Large,Jumbo};
enum class shirt{Small,Medium,Large,XLarge}; //可用struct代替class
egg ch=egg::Large;
shirt Flod=shirt::Large;
8.函數(shù)的參數(shù)是字符串時,不用用char數(shù)組,可以用char* 或 string
用char * 時,字符串賦值可以srtncpy()函數(shù)
用string時,可直接賦值,要包含頭文件string
class Bankcount {
private: char name[40]; char acctnum[25]; double balance;
public:? Bankcount( const char * client, conat char * num,dounle bail=0)
//或 Bankcount( const std::string & client,? const std::string & num,? dounle bail=0)
................};
Bankcount::Bankcount( const char * client, conat char * num,dounle bail)
{ srtncpy(name,client,39); name[39]='\0';? srtncpy(acctnum,num,24); name[24]='\0';? balance=bail }
//或者 Bankcount( const std::string & client,? const std::string & num,? dounle bail)
{ name=client; acctnum=num; balance= bail; }
————————————————
版權(quán)聲明:本文為CSDN博主「lvliang2229」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lvliang2017232003/article/details/86087051