版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第九章 對(duì)象與類19.1
從結(jié)構(gòu)化程序設(shè)計(jì)到面向?qū)ο蟪绦蛟O(shè)計(jì)2許多項(xiàng)目都接近或達(dá)到了結(jié)構(gòu)化方法所不能處理的限度,為解決這一問題,就產(chǎn)生了面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object-Oriented
Programming,簡(jiǎn)稱
OOP)方法。面向過程:程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法面向?qū)ο螅撼绦蛟O(shè)計(jì)=(數(shù)據(jù)結(jié)構(gòu)+算法)3程序設(shè)計(jì)范型(Paradigm)是指設(shè)計(jì)程序的規(guī)范、模型和風(fēng)格。不同的范型有不同的程序設(shè)計(jì)技術(shù)和方法學(xué)。過程程序設(shè)計(jì)范型:程序=過程+調(diào)用面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)范型(封裝、繼承、多態(tài))程序=對(duì)象+消息4面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)范型的主要特點(diǎn):程序基本元素是對(duì)象——由類創(chuàng)建。程序結(jié)構(gòu)由類的定義和類的使用兩部分組成。一切操作都通過向?qū)ο蟀l(fā)送相應(yīng)的消息來實(shí)現(xiàn)。類可自定義,但應(yīng)盡量使用現(xiàn)成的類。類定義部分C++程序(聲明和實(shí)現(xiàn))類使用部分(主函數(shù)及子函數(shù))9.2
面向?qū)ο蟪绦蚪Y(jié)構(gòu)及優(yōu)點(diǎn)56面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn):控制程序的復(fù)雜性增強(qiáng)程序的模塊性提高程序的重用性改善程序的可維護(hù)性能對(duì)現(xiàn)實(shí)世界的分類系統(tǒng)進(jìn)行自然的描述很好地適應(yīng)新的硬件環(huán)境7類的定義格式一般如下:class<類名>{
private:<數(shù)據(jù)成員><成員函數(shù)>protected:<數(shù)據(jù)成員><成員函數(shù)>public:<數(shù)據(jù)成員><成員函數(shù)>
};9.3
類與對(duì)象的定義8訪問權(quán)限關(guān)鍵字特性:
private:私有部分。只能由本類的成員函數(shù)訪問,不允許外界直接訪問它,即私有成員對(duì)外是完全隱蔽的。
protected:保護(hù)部分??梢杂杀绢惖某蓡T函數(shù)訪問也可由本類的公有派生類的成員函數(shù)訪問,但不允許外界直接訪問它,即它是半隱蔽的。
public:公有部分。可由程序中的任何函數(shù)(包括類內(nèi)和類外)訪問。9說明:
三個(gè)部分并非一定要全有,但至少要有其中的一個(gè)部分。
若私有部分處于類體中第一部分時(shí),關(guān)鍵字
private可以省略。
private、protected、public的次序和出現(xiàn)的次數(shù)可以是任意的。10例4
類date定義和對(duì)象today說明示例class
date
{public:void
setdate(int,int,int);//
設(shè)置月日年成員函數(shù)int
isleapyear(date);
//
判是否閏年成員函數(shù)int
howmanydays(date);//確定是該年第幾天成員函數(shù)private://月,數(shù)據(jù)成員//日,數(shù)據(jù)成員//年,數(shù)據(jù)成員int
month;int
day;int
year;};date
today;11類的成員函數(shù)在類體內(nèi)定義成員函數(shù)的格式如下:<返回類型><函數(shù)名>([<參數(shù)表>]){<函數(shù)體>}12在類體外定義成員函數(shù)的格式如下:<返回類型><類名>::<函數(shù)名>([<參數(shù)表>]){<函數(shù)體>}//域解析符”::”13
類的成員函數(shù)的定義可包含在類的定義中。類內(nèi)的函數(shù)是內(nèi)聯(lián)函數(shù)。
只有那些非常簡(jiǎn)單的函數(shù)才在類聲明中直接定義。
一般在類體中僅給出函數(shù)原型,而把函數(shù)體的定義放在類體外實(shí)現(xiàn)。
類的數(shù)據(jù)成員為該類的全體對(duì)象所共有,類的成員函數(shù)為該類的全體對(duì)象所共享。14例
學(xué)生類的定義class
Student{private:int
number;float
score;public:void
input(int
number1,float
score1);void
modify(float
score1);void
print();
};
//.h文件15void
Student::input(int
number1,float
score1){
number=number1;score=score1;
}void
Student::modify(float
score1){score=score1;
}void
Student::print(){cout<<
"
\nnumber:
"<<numter<<“score:”<<score;}//.cpp文件16僅含函數(shù)原型的類聲明部分稱為類的界面部分;類中成員函數(shù)的定義部分稱為類的實(shí)現(xiàn)部分;類的界面部分一般存放在擴(kuò)展名為h的文件中;類的實(shí)現(xiàn)部分則存放于擴(kuò)展名為cpp文件中;
在.cpp文件的開頭要用include將.h文件包含在其中。179.4
構(gòu)造函數(shù)和析構(gòu)函數(shù)專門用于對(duì)象自動(dòng)生成和自動(dòng)撤消的兩個(gè)成員函數(shù),稱為構(gòu)造函數(shù)和析構(gòu)函數(shù)。1.構(gòu)造函數(shù)特點(diǎn):函數(shù)名與其所屬類名相同,但無任何返回類型。例如,我們可給Student類定義構(gòu)造函數(shù)如下:
Student::Student(int
number1,float
score1){
number=number1;score=score1;
}18在聲明一個(gè)類變量時(shí),系統(tǒng)自動(dòng)調(diào)用構(gòu)造函數(shù)對(duì)變量進(jìn)行初始化,而生成對(duì)象。例如:
Studenta(10,90);
//創(chuàng)建了對(duì)象a構(gòu)造函數(shù)可以重載??梢越oStudent類再定義一個(gè)構(gòu)造函數(shù):Student::Student(){
number=0;score=0;
}Studentb;//創(chuàng)建了對(duì)象b,其兩個(gè)數(shù)據(jù)成員的值都是0。19利用構(gòu)造函數(shù)直接創(chuàng)建對(duì)象的一般語法形式為:<類名>
<對(duì)象名>
[
(
<實(shí)參表>
)
]
;利用構(gòu)造函數(shù)創(chuàng)建對(duì)象的第二種方法是:<類名>
*<指針>
=
new
<類名>[(<實(shí)參表>]
;例如:Student
*pa=new
Student(10,90);20例9定義complex的復(fù)數(shù)類,以執(zhí)行有關(guān)復(fù)數(shù)和、差、積等。在類定義中包含構(gòu)造函數(shù),每當(dāng)創(chuàng)建一個(gè)復(fù)數(shù)對(duì)象時(shí),通過該構(gòu)造函數(shù)對(duì)復(fù)數(shù)對(duì)象初始化,即令其實(shí)部與虛部均為0。#include<iostream>using
namespace
std;class
complex{public:complex(int=0,int=0);void
setcomp(int,int);void
addcomp(complex,complex);void
subcomp(complex,complex);void
mulcomp(complex,complex);void
printcomp(
);private:
int
real;
int
imag;
};imag=z1.real*z2.imag+z2.real*z1.imag;}21complex::complex(int
re,int
im){setcomp(re,im);
}void
complex::setcomp(int
re,int
im){real=re;
imag=im;
}void
complex::addcomp(complex
z1,complex
z2){real=z1.real+z2.real;imag=z1.imag+z2.imag;
}void
complex::subcomp(complex
z1,complex
z2){real=z1.real-z2.real;imag=z1.imag-z2.imag;
}void
complex::mulcomp(complex
z1,complex
z2){real=z1.real*z2.real-z1.imag*z2.imag;void
complex::printcomp(
){cout<<”(”<<real<<”,”<<imag<<”)”;
}void
main(
){complex
z1,z2(5),z;z.addcomp(z1,z2);z1.printcomp(
);cout<<”+”;z2.printcomp(
);cout<<”=”;z.printcomp(
);
cout<<endl;z1.setcomp(8,9);z2.setcomp(2,10);z.subcomp(z1,z2);
z1.printcomp(
);cout<<”-”;z2.printcomp(
);cout<<”=”;z.printcomp(
);cout<<endl;z.mulcomp(z1,z2);
z1.printcomp(
);cout<<”*”;z2.printcomp(
);cout<<”=”;z.printcomp(
);cout<<endl;
}2223運(yùn)行示例(0,0)+(5,0)=(5,0)(8,9)-(2,10)=(6,-1)(8,9)*(2,10)=(-74,98)24強(qiáng)調(diào)
在程序中無需也無法直接調(diào)用某類的構(gòu)造函數(shù)。某類的構(gòu)造函數(shù)在創(chuàng)建該類的對(duì)象時(shí)由系統(tǒng)自動(dòng)調(diào)用。
不允許在類定義中說明類的數(shù)據(jù)成員時(shí)直接進(jìn)行初始化。以下的類定義是不正確的:class
complex{……private:int
real=0;//錯(cuò)誤!int
imag=0;//錯(cuò)誤!};252.析構(gòu)函數(shù)析構(gòu)函數(shù)與所屬類同名,定義時(shí)不能指定任何返回類型,但析構(gòu)函數(shù)的函數(shù)名前要有一個(gè)”~”號(hào),函數(shù)名后有一對(duì)圓括號(hào),且其中無參數(shù),函數(shù)體內(nèi)一般僅由delete
p;形的刪除語句組成,其中p為構(gòu)造函數(shù)中指向由
new所開辟的內(nèi)存空間的指針。26與類的構(gòu)造函數(shù)相同的是,類的析構(gòu)函數(shù)不帶 有函數(shù)類型標(biāo)識(shí)符,即不返回任何函數(shù)值。與類的構(gòu)造函數(shù)不同的是,類的析構(gòu)函數(shù)不接 受任何參數(shù)。一個(gè)類定義中只能定義一個(gè)析構(gòu)函數(shù),也就是 說,類的析構(gòu)函數(shù)不能重載。但是,卻允許定 義多個(gè)重載構(gòu)造函數(shù)。27例10程序在類complex定義中包含一個(gè)不執(zhí)行任何附加操作的析構(gòu)函數(shù)定義,另外,所有類的公有成員函數(shù)包括構(gòu)造函數(shù)、析構(gòu)函數(shù)均在類定義內(nèi)給出完整定義。#include<iostream>using
namespace
std;class
complex{public:complex(int
re=0,int
im=0)
{
setcomp(re,im);
}void
setcomp(int
re,int
im)
{
real=re;imag=im;
}void
addcomp(complex
z1,complex
z2){real=z1.real+z2.real;imag=z1.imag+z2.imag;
}void
subcomp(complex
z1,complex
z2){real=z1.real-z2.real;imag=z1.imag-z2.imag;
}28void
mulcomp(complex
z1,complexz2){real=z1.real*z2.real-z1.imag*z2.imag;imag=z1.real*z2.imag+z2.real*z1.imag;
}void
printcomp(
){
cout<<”(”<<real<<”,”<<imag<<”)”;
}~complex(
)
{
}private:int
real;int
imag;};29void
main(
){complex
z1,z2(5),z3,z4,z5(4,15),z6(11,5),z;z.addcomp(z1,z2);z1.printcomp(
);cout<<”+”;z2.printcomp(
);cout<<”=”;z.printcomp(
);cout<<endl;z3.setcomp(8,9);z4.setcomp(2,10);z.subcomp(z3,z4);z3.printcomp(
);cout<<”-”;z4.printcomp(
);cout<<”=”;z.printcomp(
);cout<<endl;z.mulcomp(z5,z6);z5.printcomp(
);cout<<”*”;z6.printcomp(
);cout<<”=”;z.printcomp(
);cout<<endl;
}30運(yùn)行示例(0,0)+(5,0)=(5,0)(8,9)-(2,10)=(6,-1)(4,15)*(11,5)=(-31,185)31構(gòu)造函數(shù)與析構(gòu)函數(shù)的調(diào)用順序類的構(gòu)造函數(shù)在類的對(duì)象說明時(shí)即創(chuàng)建時(shí)自動(dòng)調(diào)用。類的析構(gòu)函數(shù)在類的對(duì)象撤消時(shí)即退出其作用域范圍 時(shí)自動(dòng)調(diào)用。調(diào)用構(gòu)造函數(shù)與析構(gòu)函數(shù)的順序取決于創(chuàng)建和撤消類 的對(duì)象的順序。類的析構(gòu)函數(shù)的調(diào)用順序與類的構(gòu)造函數(shù)的調(diào)用順序 正好相反。32例11
程序演示了類exam的諸對(duì)象在不同作用域中創(chuàng)建與撤消時(shí)其構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。在類exam的定義中,還定義了重載構(gòu)造函數(shù)。#include<iostream>using
namespace
std;class
exam{
public:exam(
){
num=1;cout<<”i”<<num<<”:constructor”<<endl;
}exam(int
i)
{
num=i;cout<<”i”<<num<<”:constructor”<<endl;
}~exam(
){
cout<<”i”<<num<<”:destructor”<<endl;
}private:
int
num;
};33void
func(
){
cout<<”Enter
func.”<<endl;exam
i4(4);cout<<”Exit
func.”<<endl;}void
main(
){
cout<<”Enter
main.”<<endl;exam
i1,i2(2),i3(3);func(
);func(
);cout<<”Exit
main.”<<endl;}34運(yùn)行示例
Enter
main.i1:constructori2:constructori3:constructorEnter
func.i4:constructorExit
func.i4:destructorEnter
func.i4:constructorExit
func.i4:destructorExitmain.i3:destructori2:destructori1:destructor35可見,對(duì)于在普通函數(shù)定義中的對(duì)象說明,由于它是局部對(duì)象,因此,當(dāng)多次調(diào)用該函數(shù)時(shí),每次對(duì)該函數(shù)的調(diào)用,該對(duì)象均將創(chuàng)建與撤消,故構(gòu)造函數(shù)及析構(gòu)函數(shù)將不止一次地被調(diào)用。36運(yùn)算符重載是指將標(biāo)準(zhǔn)的、內(nèi)部定義的運(yùn)算符在類中 重新定義,以改變運(yùn)算符的原有含義及功能,使其可 擴(kuò)展至能執(zhí)行對(duì)類的對(duì)象進(jìn)行操作。在類中,將運(yùn)算符定義成重載函數(shù)的形式,稱為運(yùn)算 符重載函數(shù)。重新定義的重載運(yùn)算符可應(yīng)用于實(shí)現(xiàn)抽象數(shù)據(jù)類型, 諸如復(fù)數(shù)類、集合類、棧類等等,從而擴(kuò)展了C面向 對(duì)象程序設(shè)計(jì)的實(shí)現(xiàn)能力。9.6
用成員函數(shù)重載運(yùn)算符37運(yùn)算符重載時(shí)應(yīng)遵循的一些規(guī)則:運(yùn)算符重載機(jī)制可用來改變C語言所提供大多數(shù)標(biāo)準(zhǔn)的、內(nèi)部預(yù)定義運(yùn)算符的含義。一個(gè)被重載的運(yùn)算符,就是一個(gè)用戶自定義的運(yùn)算符重載函數(shù)。運(yùn)算符重載只能應(yīng)用于類的對(duì)象。只能重載現(xiàn)有的內(nèi)部預(yù)定義運(yùn)算符。C++語言所提供內(nèi)部預(yù)定義運(yùn)算符中的大多數(shù)(而非全部)可用于運(yùn)算符重載。運(yùn)算符重載不能改變內(nèi)部預(yù)定義運(yùn)算符原有的優(yōu)先級(jí)及結(jié)合性。必須遵循與特定運(yùn)算符相聯(lián)系的句法格式。38實(shí)現(xiàn)運(yùn)算符重載的函數(shù)定義形式在C程序中,可使用如下三種不同的運(yùn)算符重載函數(shù)定義形式進(jìn)行運(yùn)算符重載:用類的成員函數(shù)進(jìn)行運(yùn)算符重載。用頂層函數(shù)進(jìn)行運(yùn)算符重載。用類的友元函數(shù)進(jìn)行運(yùn)算符重載。39用成員函數(shù)重載運(yùn)算符的一般格式為:<返回類型>operator<運(yùn)算符>([<參數(shù)表>]){<定義體>}其中,operator是函數(shù)的關(guān)鍵字。一元運(yùn)算符則參數(shù)表為空,
二元運(yùn)算符,則參數(shù)表中只有一個(gè)操作對(duì)象,這個(gè)操作對(duì)象代表右操作數(shù),左操作數(shù)則由
this指針傳給該函數(shù)。
this指針是構(gòu)成運(yùn)算符重載這一機(jī)制所必須的組成部分。40這種重載運(yùn)算符函數(shù)的語義可表示為<對(duì)象>.operator<一元運(yùn)算符>()或<對(duì)象1>.operator<二元運(yùn)算符,<對(duì)象2>)前者可解釋為給當(dāng)前對(duì)象發(fā)送一個(gè)進(jìn)行某一元運(yùn)算的消息;
后者可解釋為給當(dāng)前對(duì)象1發(fā)送一個(gè)與對(duì)象2進(jìn)行某二元運(yùn)算的消息。
這兩種語義表示形式也可作為重載后的相應(yīng)運(yùn)算符的使用形式(下面的友員函數(shù)重載運(yùn)算符也一樣)。但一般情況下人們還是沿用運(yùn)算符通常的簡(jiǎn)潔表示形式。41例
成員函數(shù)重載運(yùn)算符#include<iostream.h>class
Vector{int
X,y;public:Vector();//定義一個(gè)二維向量類Vector
(int
x1,int
y1);void
print();Vector
operator++(int);//在該類中重載一元運(yùn)算符++Vector
operator+(Vector
v);//在該類中重載二元運(yùn)算符十};42Vector::Vector(){x=0;y=0;}Vector::Vector(int
x1,int
y1){x=x1;y=y1;}void
Vector::print(){
cout<<"\n("<<x<<","<<y<<")";}Vector
Vector::operator++(int){
x++;y++;return
*this;
}Vector
Vectoc::operator十(Vector
v){
Vector
v0;v0.x=x+v.x;//這里的x相當(dāng)于this->x,即左操作數(shù)的數(shù)據(jù)成員43v0·y=y+v.y;//這里的y相當(dāng)于this-)y,即左操作數(shù)的數(shù)據(jù)成員
return
v0;}main(){
Vector
v1(10,10);v1.print();Vector
v11;v11=v1++;v1.print();v11.print();Vector
v2(20,20);//測(cè)試程序44(v1+v2).Print();Vector
v3;v3=v1+v2;v3.print();v3++·print();return
0
;}C++約定:對(duì)于前綴方式(++i)括號(hào)中為空;對(duì)于后綴方式(i--)括號(hào)中填寫符號(hào)”int”?!こ绦虻倪\(yùn)行結(jié)果為·
(10,10)·
(11,11)·
(11,11)·
(31,31)·
(31,31)·
(32,32)459.7
使用類的友元函數(shù)進(jìn)行運(yùn)算符重載關(guān)于類的友元函數(shù),有下列使用規(guī)則:類的友元函數(shù)不是類的成員,但它應(yīng)在類中定義,在類的外部實(shí)現(xiàn)。在類中定義友元函數(shù)時(shí),函數(shù)名前應(yīng)前置關(guān)鍵字
friend,而在類的外部實(shí)現(xiàn)友元函數(shù)時(shí),省略關(guān)鍵字
friend。類的友元函數(shù)可訪問類的公有成員、私有成員和保護(hù)成員。this指針不能用于類的友元函數(shù),它僅能用于類的成員函數(shù)。46友員函數(shù)重載運(yùn)算符的一般格式為:friend
<返回類型>operator
<運(yùn)算符>
([<參數(shù)表>]){<定義體>}其中,一元運(yùn)算符參數(shù)表中只有一個(gè)操作對(duì)象;
二元運(yùn)算符參數(shù)表中需要兩個(gè)操作對(duì)象,它們分別代表左、右操作數(shù)。47這種重載運(yùn)算符函數(shù)的語義可表示為:
operator<一元運(yùn)算符>(<對(duì)象>)或operator<二元運(yùn)算符>(<對(duì)象1,對(duì)象2>)前者表示:對(duì)當(dāng)前對(duì)象進(jìn)行某一元運(yùn)算;后者表示:對(duì)當(dāng)前對(duì)象1和對(duì)象2施行某二元運(yùn)算。例
用友員函數(shù)重載運(yùn)算符class
Vector{public:friend
Vector
operator十(Vector
v1,Vectorv2);};48Vector
operator+(Vector
v1,Vector
v2){Vector
v0;v0.x=v1.x+v2.x:Vo.y=v1.y+v2.y;return
v0;
}main(){
Vector
v1(10,10);
Vector
v2(20,20);
Vector
v3;v3=v1十v2;v3.print();reyurn
0;
}·程序運(yùn)行結(jié)果為:·
(30,30)499.8類模板與模板類C++語言利用模板機(jī)制為類定義類模板(即設(shè)置通用 類型,可稱為類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拖拉機(jī)安全駕駛操作規(guī)程
- 北京警察學(xué)院《數(shù)字信號(hào)處理》2024 - 2025 學(xué)年第一學(xué)期期末試卷
- 北京警察學(xué)院《課程與教學(xué)論》2024 - 2025 學(xué)年第一學(xué)期期末試卷
- 2025年MBA綜合能力模擬試卷(含邏輯題解析)實(shí)戰(zhàn)演練
- 2026年口腔醫(yī)療管理公司院感監(jiān)測(cè)與報(bào)告制度
- 2026年劇本殺運(yùn)營(yíng)公司線上營(yíng)銷平臺(tái)管理制度
- 江蘇省揚(yáng)州市2025-2026年高三上學(xué)期一模語文試卷(含答案)
- 2026年通信行業(yè)5G技術(shù)應(yīng)用報(bào)告及物聯(lián)網(wǎng)創(chuàng)新報(bào)告
- 2026年及未來5年中國(guó)沖床設(shè)備市場(chǎng)供需格局及未來發(fā)展趨勢(shì)報(bào)告
- 值班制度規(guī)章制度
- 大數(shù)據(jù)安全技術(shù)與管理
- 2026年中小學(xué)校長(zhǎng)校園安全管理培訓(xùn)考試題及答案
- 藥品臨床綜合評(píng)價(jià)實(shí)施方案
- 除塵布袋更換施工方案
- 養(yǎng)老護(hù)理員培訓(xùn)演示文稿
- 深圳加油站建設(shè)項(xiàng)目可行性研究報(bào)告
- 浙江省交通設(shè)工程質(zhì)量檢測(cè)和工程材料試驗(yàn)收費(fèi)標(biāo)準(zhǔn)版浙價(jià)服定稿版
- 紅樓夢(mèng)研究最新課件
- 給紀(jì)檢監(jiān)察部門舉報(bào)材料
- 低壓電工安全技術(shù)操作規(guī)程
評(píng)論
0/150
提交評(píng)論