第一篇:實(shí)驗(yàn)(上機(jī))類的屬性和構(gòu)造函數(shù)
實(shí)驗(yàn)(上機(jī))三類的成員
實(shí)驗(yàn)(上機(jī))目的1、鞏固類的創(chuàng)建
2、會(huì)定義類的成員:字段及方法
3、會(huì)調(diào)用類的方法實(shí)現(xiàn)對(duì)象的操作
實(shí)驗(yàn)(上機(jī))課時(shí)
4學(xué)時(shí)
實(shí)驗(yàn)(上機(jī))環(huán)境
Visual Studio 2010
預(yù)備知識(shí)
1、面向?qū)ο蠓椒ā?/p>
2、類的定義。
實(shí)驗(yàn)(上機(jī))內(nèi)容
1、定義轎車類,添加屬性牌號(hào)、顏色、重量、出廠日期;輸出該車的顏色、重量和出廠日期的方法,重載構(gòu)造函數(shù),初始化有牌號(hào)和出廠日期的車輛。在窗體中創(chuàng)建一個(gè)轎車對(duì)象,調(diào)試程序。
2、創(chuàng)建一個(gè)班級(jí)類,包含輔導(dǎo)員、班級(jí)名稱、所屬系部、人數(shù)屬性,其中人數(shù)不能超過(guò)60人;輸出班級(jí)的名稱和人數(shù)的方法;重載構(gòu)造函數(shù),創(chuàng)建帶名稱和輔導(dǎo)員的班級(jí)及默認(rèn)人數(shù)為50人。在窗體中實(shí)例化對(duì)象”_0900103班”和“_0900141班”,并輸出。
3、創(chuàng)建時(shí)間Shijian類,它包含3個(gè)整型屬性:Hour、Minute、Second,它們用于表示采取統(tǒng)一時(shí)間格式(24小時(shí)時(shí)鐘格式)的一個(gè)時(shí)間。并定義一個(gè)不含參數(shù)的ToUniversalString方法,該方法采用統(tǒng)一時(shí)間格式返回一個(gè)字符串,它包括6個(gè)數(shù)位--2個(gè)表示小時(shí),2個(gè)表示分鐘,2個(gè)表示秒。創(chuàng)建Shijian類的2個(gè)實(shí)例,編譯和調(diào)試Shijian類。
要求:采用默認(rèn)和重載的構(gòu)造函數(shù)兩種方式進(jìn)行實(shí)例化類。
4、完成學(xué)生類的建立(提示:建立三個(gè)屬性分別是xuehao,name,birthday;添加一個(gè)方法輸出學(xué)生的相關(guān)信息,其輸出格式為:
“姓名:張三 學(xué)號(hào):00000000 生日:1989-12-12”。)
要求:采用默認(rèn)和重載的構(gòu)造函數(shù)兩種方式進(jìn)行實(shí)例化類。
實(shí)驗(yàn)(上機(jī))步驟
按上課代碼演示步驟完成上機(jī)內(nèi)容
考核內(nèi)容
1、熟練使用開(kāi)發(fā)環(huán)境;
2、代碼完整無(wú)誤;
3、代碼注釋量達(dá)100%。
第二篇:構(gòu)造函數(shù)
構(gòu)造函數(shù)
1.設(shè)
f(x),g(x)分別為定義在R上的奇函數(shù)和偶函數(shù),當(dāng)x?0時(shí),f?(x)g(x)?f(x)g?(x)?0,且g(?3)?0,則不等式f(x)g(x)?0的解集為_(kāi)_____.2.設(shè)f(x)是定義在R上的奇函數(shù),且f(2)?0,當(dāng)x?0時(shí),有x?
f?(x)?f(x)?0
恒成立,則不等式x2f(x)?0的解集為_(kāi)_________.3.已知函數(shù)f(x)是定義在R上的奇函數(shù),且當(dāng)x?(??,0)時(shí),有x?<0成立,若a?30.3?
b
f?(x)+f(x)1
3f(3
0.3),b??log?3??
f(log
?
3),c?(log
9)?f(log
9),則a、、c的大小關(guān)系為_(kāi)_________.f(x),則當(dāng)a?0
4.已知可導(dǎo)函數(shù)f(x)滿足f?(x)?系為_(kāi)_________.時(shí),f(a)與ea?
f(0)的大小關(guān)
5.若函數(shù)f(x)對(duì)任意的x?R都有f?(x)?
A.3f(ln2)?2f(ln3)
f(x)
成立,則__________.B.3f(ln2)?2f(ln3)
C.3f(ln2)?2f(ln3)D.3f(ln2)與2f(ln3)的大小關(guān)系不確定
6.設(shè)f(x)是R上的奇函數(shù),且f(?1)?0,當(dāng)x?0時(shí),(x2
?1)?f?(x)?2x?f(x)?0,則不等式f(x)?0的解集為_(kāi)_________.7.已知函數(shù)f(x)是定義在(0,??)的非負(fù)可導(dǎo)函數(shù),且滿足x?對(duì)任意正數(shù)a、b,若a
f?(x)+f(x)?0,B.af(b)?bf(a)C.af(a)?f(b)
D.bf(b)?f(a),8.已知f(x)與g(x)都是定義在R上的函數(shù),g(x)?0,f?(x)g(x)?
f(x)?a?g(x),x
f(x)g?(x)?0
f(1)g(1)
?
f(?1)g(?1)
?
.在有窮數(shù)列?
?f(n)?
?(n?1,2,?,10)中,前kg(n)??
項(xiàng)和
為
1516,則k=__________.
第三篇:構(gòu)造函數(shù)法
函數(shù)與方程數(shù)學(xué)思想方法是新課標(biāo)要求的一種重要的數(shù)學(xué)思想方法,構(gòu)造函數(shù)法便是其中的一種。
高等數(shù)學(xué)中兩個(gè)重要極限
1.limsinx?1 x?0x
11x2.lim(1?)?e(變形lim(1?x)x?e)x?0x??x
由以上兩個(gè)極限不難得出,當(dāng)x?0時(shí)
1.sinx?x,2.ln(1?x)?x(當(dāng)n?N時(shí),(1?)n?e?(1?)n?1).
下面用構(gòu)造函數(shù)法給出兩個(gè)結(jié)論的證明.
(1)構(gòu)造函數(shù)f(x)?x?sinx,則f?(x)?1?cosx?0,所以函數(shù)f(x)在(0,??)上單調(diào)遞增,f(x)?f(0)?0.所以x?sinx?0,即sinx?x.
(2)構(gòu)造函數(shù)f(x)?x?ln(1?x),則f?(x)?1??1n1n1x??0.所以函數(shù)f(x)在1?x1?x
(0,??)上單調(diào)遞增,f(x)?f(0)?0,所以x?ln(1?x),即ln(1?x)?x. ?1?要證?1???n?事實(shí)上:設(shè)1?n?11?1??e,兩邊取對(duì)數(shù),即證ln?1???, nn?1??11?t,則n?(t?1), nt?1
1因此得不等式lnt?1?(t?1)t
1構(gòu)造函數(shù)g(t)?lnt??1(t?1),下面證明g(t)在(1,??)上恒大于0. t
11g?(t)??2?0, tt
∴g(t)在(1,??)上單調(diào)遞增,g(t)?g(1)?0, 即lnt?1?, 1
t
1?1??1?∴ ln?1???,∴?1???n??n?n?1n?1?e,以上兩個(gè)重要結(jié)論在高考中解答與導(dǎo)數(shù)有關(guān)的命題有著廣泛的應(yīng)用.
第四篇:二、類的設(shè)計(jì),構(gòu)造函數(shù)和析構(gòu)函數(shù)
類是編程人員表達(dá)自定義數(shù)據(jù)類型的C++機(jī)制。它和C語(yǔ)言中的結(jié)構(gòu)類似,C++類支持?jǐn)?shù)據(jù)抽象和面向?qū)ο蟮某绦蛟O(shè)計(jì),從某種意義上說(shuō),也就是數(shù)據(jù)類型的設(shè)計(jì)和實(shí)現(xiàn)。
一、類的設(shè)計(jì)
1.類的聲明
class 類名
{
private://私有
...public://公有
...};
2.類的成員
一般在C++類中,所有定義的變量和函數(shù)都是類的成員。如果是變量,我們就叫它數(shù)據(jù)成員如果是函數(shù),我們就叫它成員函數(shù)。
3.類成員的可見(jiàn)性
private和public訪問(wèn)控制符決定了成員的可見(jiàn)性。由一個(gè)訪問(wèn)控制符設(shè)定的可訪問(wèn)狀態(tài)將一直持續(xù)到下一個(gè)訪問(wèn)控制符出現(xiàn),或者類聲明的結(jié)束。私有成員僅能被同一個(gè)類中的成員函數(shù)訪問(wèn),公有成員既可以被同一類中的成員函數(shù)訪問(wèn),也可以被其他已經(jīng)實(shí)例化的類中函數(shù)訪問(wèn)。當(dāng)然,這也有例外的情況,這是以后要討論的友元函數(shù)。類中默認(rèn)的數(shù)據(jù)類型是private,結(jié)構(gòu)中的默認(rèn)類型是public。一般情況下,變量都作為私有成員出現(xiàn),函數(shù)都作為公有成員出現(xiàn)。
類中還有一種訪問(wèn)控制符protected,叫保護(hù)成員,以后再說(shuō)明。
4.初始化
在聲明一個(gè)類的對(duì)象時(shí),可以用圓括號(hào)()包含一個(gè)初始化表。
看下面一個(gè)例子:
#include “iostream.h”
class Box
{
private:
int height,width,depth;//3個(gè)私有數(shù)據(jù)成員
public:
Box(int,int,int);
~Box();
int volume();//成員函數(shù)
};
Box::Box(int ht,int wd,int dp)
{
height=ht;
width=wd;
depth=dp;
}
Box::~Box()
{
//nothing
}
int Box::volume()
{
return height*width*depth;
}
int main()
{
Box thisbox(3,4,5);//聲明一個(gè)類對(duì)象并初始化
cout< return 0; } 當(dāng)一個(gè)類中沒(méi)有private成員和protected成員時(shí),也沒(méi)有虛函數(shù),并且不是從其他類中派生出來(lái)的,可以用{}來(lái)初始化。(以后再講解) 5.內(nèi)聯(lián)函數(shù) 內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別是:內(nèi)聯(lián)函數(shù)是在編譯過(guò)程中展開(kāi)的。通常內(nèi)聯(lián)函數(shù)必須簡(jiǎn)短。定義類的內(nèi)聯(lián)函數(shù)有兩種方法:一種和C語(yǔ)言一樣,在定義函數(shù)時(shí)使用關(guān)鍵字inline。如: inline int Box::volume() { return height*width*depth; } 還有一種方法就是直接在類聲明的內(nèi)部定義函數(shù)體,而不是僅僅給出一個(gè)函數(shù)原型。我們把上面的函數(shù)簡(jiǎn)化一下: #include “iostream.h” class Box { private: int height,width,depth; public: Box(int ht,int wd,int dp) { height=ht; width=wd; depth=dp; } ~Box(); int volume() { return height*width*depth; } }; int main() { Box thisbox(3,4,5);//聲明一個(gè)類對(duì)象并初始化 cout< return 0; } 這樣,兩個(gè)函數(shù)都默認(rèn)為內(nèi)聯(lián)函數(shù)了。 二、構(gòu)造函數(shù) 什么是構(gòu)造函數(shù)?通俗的講,在類中,函數(shù)名和類名相同的函數(shù)稱為構(gòu)造函數(shù)。上面的Box()函數(shù)就是構(gòu)造函數(shù)。C++允許同名函數(shù),也就允許在一個(gè)類中有多個(gè)構(gòu)造函數(shù)。如果一個(gè)都沒(méi)有,編譯器將為該類產(chǎn)生一個(gè)默認(rèn)的構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)可能會(huì)完成一些工作,也可能什么都不做。 絕對(duì)不能指定構(gòu)造函數(shù)的類型,即使是void型都不可以。實(shí)際上構(gòu)造函數(shù)默認(rèn)為void型。 當(dāng)一個(gè)類的對(duì)象進(jìn)入作用域時(shí),系統(tǒng)會(huì)為其數(shù)據(jù)成員分配足夠的內(nèi)存,但是系統(tǒng)不一定將其初始化。和內(nèi)部數(shù)據(jù)類型對(duì)象一樣,外部對(duì)象的數(shù)據(jù)成員總是初始化為0。局部對(duì)象不會(huì)被初始化。構(gòu)造函數(shù)就是被用來(lái)進(jìn)行初始化工作的。當(dāng)自動(dòng)類型的類對(duì)象離開(kāi)其作用域時(shí),所站用的內(nèi)存將釋放回系統(tǒng)。 看上面的例子,構(gòu)造函數(shù)Box()函數(shù)接受三個(gè)整型擦黑素,并把他們賦值給立方體對(duì)象的數(shù)據(jù)成員。 如果構(gòu)造函數(shù)沒(méi)有參數(shù),那么聲明對(duì)象時(shí)也不需要括號(hào)。 1.使用默認(rèn)參數(shù)的構(gòu)造函數(shù) 當(dāng)在聲明類對(duì)象時(shí),如果沒(méi)有指定參數(shù),則使用默認(rèn)參數(shù)來(lái)初始化對(duì)象。 #include “iostream.h” class Box { private: int height,width,depth; public: Box(int ht=2,int wd=3,int dp=4) { height=ht; width=wd; depth=dp; } ~Box(); int volume() { return height*width*depth; } }; int main() { Box thisbox(3,4,5);//初始化 Box defaulbox;//使用默認(rèn)參數(shù) cout< cout< 4return 0; } 2.默認(rèn)構(gòu)造函數(shù) 沒(méi)有參數(shù)或者參數(shù)都是默認(rèn)值的構(gòu)造函數(shù)稱為默認(rèn)構(gòu)造函數(shù)。如果你不提供構(gòu)造函數(shù),編譯器會(huì)自動(dòng)產(chǎn)生一個(gè)公共的默認(rèn)構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)什么都不做。如果至少提供一個(gè)構(gòu)造函數(shù),則編譯器就不會(huì)產(chǎn)生默認(rèn)構(gòu)造函數(shù)。 3.重載構(gòu)造函數(shù) 一個(gè)類中可以有多個(gè)構(gòu)造函數(shù)。這些構(gòu)造函數(shù)必須具有不同的參數(shù)表。在一個(gè)類中需要接受不同初始化值時(shí),就需要編寫多個(gè)構(gòu)造函數(shù),但有時(shí)候只需要一個(gè)不帶初始值的空的Box對(duì)象。 #include “iostream.h” class Box { private: int height,width,depth; public: Box(){ //nothing } Box(int ht=2,int wd=3,int dp=4) { height=ht; width=wd; depth=dp; } ~Box(); int volume() { return height*width*depth; } }; int main() { Box thisbox(3,4,5);//初始化 Box otherbox; otherbox=thisbox; cout< return 0; } 這兩個(gè)構(gòu)造函數(shù)一個(gè)沒(méi)有初始化值,一個(gè)有。當(dāng)沒(méi)有初始化值時(shí),程序使用默認(rèn)值,即2,3,4。 但是這樣的程序是不好的。它允許使用初始化過(guò)的和沒(méi)有初始化過(guò)的Box對(duì)象,但它沒(méi)有考慮當(dāng)thisbox給otherbox賦值失敗后,volume()該返回什么。較好的方法是,沒(méi)有參數(shù)表的構(gòu)造函數(shù)也把默認(rèn)值賦值給對(duì)象。 class Box { int height,width,depth; public: Box() { height=0;width=0;depth=0; } Box(int ht,int wd,int dp) { height=ht;width=wd;depth=dp; } int volume() { return height*width*depth; } }; 這還不是最好的方法,更好的方法是使用默認(rèn)參數(shù),根本不需要不帶參數(shù)的構(gòu)造函數(shù)。 class Box { int height,width,depth; public: Box(int ht=0,int wd=0,int dp=0) { height=ht;width=wd;depth=dp; } int volume() { return height*width*depth; } }; 三、析構(gòu)函數(shù) 當(dāng)一個(gè)類的對(duì)象離開(kāi)作用域時(shí),析構(gòu)函數(shù)將被調(diào)用(系統(tǒng)自動(dòng)調(diào)用)。析構(gòu)函數(shù)的名字和類名一樣,不過(guò)要在前面加上 ~。對(duì)一個(gè)類來(lái)說(shuō),只能允許一個(gè)析構(gòu)函數(shù),析構(gòu)函數(shù)不能有參數(shù),并且也沒(méi)有返回值。析構(gòu)函數(shù)的作用是完成一個(gè)清理工作,如釋放從堆中分配的內(nèi)存。 我們也可以只給出析構(gòu)函數(shù)的形式,而不給出起具體函數(shù)體,其效果是一樣的,如上面的例子。但在有些情況下,析構(gòu)函數(shù)又是必需的。如在類中從堆中分配了內(nèi)存,則必須在析構(gòu)函數(shù)中釋放 類的構(gòu)造函數(shù) 析構(gòu)函數(shù)與賦值函數(shù) 構(gòu)造函數(shù) 析構(gòu)函數(shù)與賦值函數(shù)是每個(gè)類最基本的函數(shù)。它們太普通以致讓人容易麻痹大意,其實(shí)這些貌似簡(jiǎn)單的函數(shù)就象沒(méi)有頂蓋的下水道那樣危險(xiǎn)。 每個(gè)類只有一個(gè)析構(gòu)函數(shù)和一個(gè)賦值函數(shù),但可以有多個(gè)構(gòu)造函數(shù)(包含一個(gè)拷貝構(gòu)造函數(shù),其它的稱為普通構(gòu)造函數(shù))。對(duì)于任意一個(gè)類A,如果不想編寫上述函數(shù),C++編譯器將自動(dòng)為A產(chǎn)生四個(gè)缺省的函數(shù),如 A(void);// 缺省的無(wú)參數(shù)構(gòu)造函數(shù) A(const A &a);// 缺省的拷貝構(gòu)造函數(shù) ~A(void);// 缺省的析構(gòu)函數(shù) A & operate =(const A &a);// 缺省的賦值函數(shù) 這不禁讓人疑惑,既然能自動(dòng)生成函數(shù),為什么還要程序員編寫? 原因如下: (1)如果使用“缺省的無(wú)參數(shù)構(gòu)造函數(shù)”和“缺省的析構(gòu)函數(shù)”,等于放棄了自主“初始化”和“清除”的機(jī)會(huì),C++發(fā)明人Stroustrup的好心好意白費(fèi)了。 (2)“缺省的拷貝構(gòu)造函數(shù)”和“缺省的賦值函數(shù)”均采用“位拷貝”而非“值拷貝”的方式來(lái)實(shí)現(xiàn),倘若類中含有指針變量,這兩個(gè)函數(shù)注定將出錯(cuò)。 對(duì)于那些沒(méi)有吃夠苦頭的C++程序員,如果他說(shuō)編寫構(gòu)造函數(shù) 析構(gòu)函數(shù)與賦值函數(shù)很容易,可以不用動(dòng)腦筋,表明他的認(rèn)識(shí)還比較膚淺,水平有待于提高。 本章以類String的設(shè)計(jì)與實(shí)現(xiàn)為例,深入闡述被很多教科書忽視了的道理。String的結(jié)構(gòu)如下: class String { public: String(const char *str = NULL);// 普通構(gòu)造函數(shù) String(const String &other);// 拷貝構(gòu)造函數(shù) ~ String(void);// 析構(gòu)函數(shù) String & operate =(const String &other);// 賦值函數(shù)private: char*m_data;// 用于保存字符串 };第五篇:類的構(gòu)造函數(shù) 析構(gòu)函數(shù)與賦值函數(shù)