文档库 最新最全的文档下载
当前位置:文档库 › 第六章 类和对象(二)

第六章 类和对象(二)

第六章  类和对象(二)
第六章  类和对象(二)

第六章类和对象(二)

一、选择填空

1. 已知一个类A,( C )是指向类A成员函数的指针。假设类有三个公有成员:

void f1(int),void f2(int)和int a。

A.A*p B.int A::pc=&A::a

C.void A::pa D.A*pp

2. 运算符-> *的功能是(A )。

A.使用对象指针通过指向成员的指针表示成员的运算符。

B.使用对象通过指向成员的指针表示成员的运算符。

C.用来表示指向对象指针的成员的运算符。

D.用来表示对象的成员的运算符。

3. 已知f1(int)是类A的公有成员,p是指向成员函数f1()的指针,采用( B )A.p=f1 B.p=A::f1 C.p=A::f1 D.p=f1()

4. 已知:p是一个指向类A数据成员的指针,A1是类A的一个对象。如果要给m

赋值5,( C )是正确的。

A. A1.p=5

B.A1->p=5

C. A1.*p=5

D. A1.p=5

5. 已知:类A中一个成员函数说明如下:

void Set(A&a);其中A&a的含意是( C )

A. 指向类A的指针为a

B. 将a的地址值赋给变量Set

C. a是类A的对象引用,用来作为函数Set()的形参

D. 变量A与a安位相与作为函数Set()的参数

6. 下列关于对象数组的描述中,( D )是错误的。

A. 对象数组的下标是从0开始的

B. 对象数组的数组名是一个常量指针

C. 对象数组的每个元素是同一类的对象

D. 对象数组只能赋初值,而不是被赋值

7. 下列定义中,( B )是定义指向数组的指针p

A. int*p[5]

B. int(*p)[5]

C. (int*)p[5]

D. int * p[ ]

8. 下列说明中const char * ptr中的ptr应该是( C )

A. 指向字符常量的指针

B. 指向字符的常量指针

C. 指向字符串常量额指针

D. 指向字符串的常量指针

9. 已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,

( A )是正确的。

A. void print()const

B. const void print ()

C. void const print()

D. void print (const)

10. 关于new运算符的下列描述中,(D )是错的。

A. 它可以用来动态创建对象和对象数组

B. 使用它关键的对象或对象数组可以使用运算符delete删除

C. 使用它创建对象时要调用构造函数

D. 使用它创建对象数组时必要指定初始值

11. 关于delete运算符的下列描述中,( C )是错的。

A. 它必须用于new返回的指针

B. 它也适用于空指针

C. 对一个指针可以使用多次该运算符

D. 指针名前只用一次对方括号符,不考虑所删除数组的维数

12. 具有类型转换功能的构造函数,应该是( B )。

A. 不带参数的构造函数

B. 带一个参数的构造函数

C. 带两个以上参数的构造函数

D. 默认构造函数

13. 下列关于模板的描述中,错误的是( C )

A. 类模板的成员函数可以是函数模板

B. 类模板生成模版类时,必须指定参数化的类型所代表的具体类型

C. 定义类模板是只允许有一个模版参数

D. 类模板所描述的是一组类

二、判断对错

1. 指向对象的指针和指向类的成员的指针在表达形式上是不相同的。(对)

2. 已知:m是类A的对象,n是类A的公有数据成员,p是指向类A中n成员

的指针。下述两种表达是等价的:m.n和m.*p(对)

3. 指向对象的指针与对象都可以作为函数参数,但是使用前者比后者好些。(对)

4. 对象引用作为函数参数比用对象指针更方便些。(对)

5. 对象数组的元素可以是不同类的对象。(错)

6. 对象数组既可以赋初值又可以赋值。(对)

7. 指向对象数组的指针不一定必须指向数组的首元素。(对)

8. 一维对象指针数组的每个元素应该是某个类的对象的地址值。(对)

9. const char *p说明了p是指向字符串的常量指针。(对)

10. 一个能够更新的变量使用在一个不能被更新的环境中是不破坏类型保护

的,反之依然。(错)

11. 一个类的构造函数中可以不包含对其子对象的初始化。(错)

12. 类型转换函数不是成员函数,它是用来进行强制类型转换的。(错)

13. 使用模板可以减少重复劳动,提高代码重用率。(对)

14. C++语言中模板分为函数模板和类模板两种。(对)

15. 类模板可以生成若干哥模板类,每个模版类又可以定义若干个对象。(错)

三、分析下列程序的输出结果

1.

#include

class A

{

public:

A( );

A(int i,int j);

~A( );

void Set(int i,int j) {a=i;b=j;}

private:

int a,b;

};

A::A( )

{

a=0;

b=0;

cout<<"Default constructor called.\n";

}

A::A(int i,int j)

{

a=i;

b=j;

cout<<"Constructor: a="<

}

A::~A( )

{

cout<<"Destructor called. a="<

}

void main( )

{

cout<<"Starting1...\n";

A a[3];

for(int i=0;i<3;i++)

a[i].Set(2*i+1,(i+1)*2);

cout<<"Ending1...\n";

cout<<"starting2...\n";

A b[3]={A(1,2),A(3,4),A(5,6)};

cout<<"Ending2...\n";

}

2.

#include

class B

{

int x,y;

public:

B( );

B(int i);

B(int i,int j);

~B();

void print( );

};

B::B( )

{

x=y=0;

cout<<"Default constructor called.\n"; }

B::B(int i)

{

x=i;

y=0;

cout<<"Constructor1 called.\n";

}

B::B(int i,int j)

{

x=i;

y=j;

cout<<"Constructor2 called.\n";

}

B::~B( )

{

cout<<"Destructor called.\n";

}

void B::print( )

{

cout<<"x= "<

}

void main( )

{

B *ptr;

ptr=new B[3];

ptr[0]=B();

ptr[1]=B(5);

ptr[2]=B(2,3);

for(int i=0;i<3;i++)

ptr[i].print( );

delete[ ] ptr;

}

3.

#include

class A

{

public:

A(int i=0) {m=i;cout<<"constructor called."<

void Print( ) const {cout<

~A( ) {cout<<"destructor called."<

private:

int m;

};

void main( )

{

const int N=5;

A my;

my=N;

my.Print( );

}

4.

#include

class A

{

public:

A(int i=0) {m=i;cout<<"constructor called."<

void Print( ) const {cout<

~A() {cout<<"destructor called."<

private:

int m;

};

void fun(const A& c)

{

c.Print( );

}

void main( )

{

fun(5);

}

5.

#include

class complex

{

public:

complex( );

complex(double real);

complex(double real,double imag);

void print( );

void set(double r,double i);

private:

double real,imag;

};

complex::complex( )

{

set(0.0,0.0);

cout<<"Default constructor called.\n";

}

complex::complex(double real)

{

set(real,0.0);

cout<<"Constructor: real="<

}

complex::complex(double real,double imag)

{

set(real,imag);

cout<<"Constructor: real="<

}

void complex::print( )

{

if(imag<0)

cout<

else

cout<

void complex::set(double r,double i) {

real=r;

imag=i;

}

void main()

{

complex c1;

complex c2(6.8);

complex c3(5.6,7.9);

c1.print();

c2.print();

c3.print();

c1=complex(1.2,3.4);

c2=5;

c3=complex();

c1.print();

c2.print();

c3.print();

}

6.

#include

template

class Array

{

public:

M & operator [ ](int i);

M getnum(int i)

{ return buf[i]; }

private:

M buf[N];

};

template

M & Array 〈M, N〉::operator [](int i)

{

return buf[i];

}

void main()

{

Array 〈double, 10〉 a;

for (int i(0); i<10; i++)

a[i]=18.2+i;

for(i=0; i<10; i++)

cout<

cout<

}

四、分析下列程序,并回答提出的问题

#include

#include

class String

{

public:

String() {Length=0;Buffer=0;}

String(const char *str);

void Setc(int index,char newchar);

char Getc(int index) const;

int GetLength() const {return Length;} void Print() const

{

if(Buffer==0)

cout<<"empty.\n";

else

cout<

}

void Append(const char *Tail);

~String() {delete[ ] Buffer;}

private:

int Length;

char *Buffer;

};

String::String(const char *str)

{

Length=strlen(str);

Buffer=new char[Length+1];

strcpy(Buffer,str);

}

void String::Setc(int index,char newchar) {

if(index>0&&index<=Length)

Buffer[index-1]=newchar;

}

char String::Getc(int index) const

{

if(index>0&&index<=Length)

return Buffer[index-1];

else

return 0;

}

void String::Append(const char *Tail)

{

char *tmp;

Length+=strlen(Tail);

tmp=new char[Length+1];

strcpy(tmp,Buffer);

strcat(tmp,Tail);

delete[ ] Buffer;

Buffer=tmp;

}

void main()

{

String s0,s1("a string.");

s0.Print();

s1.Print();

cout<

s1.Setc(5,'p');

s1.Print();

cout<

String s2("this ");

s2.Append("a string.");

s2.Print();

}

(1)该程序调用了那些在string.h中所包含的函数?

(2)该程序的String类中是否使用了函数重载的方法?那些函数是重载的?(3)简述Set( )函数的功能

(4)简述Gets( )函数的功能

(5)简述Append( )函数的功能

(6)在该程序的成员函数Print( )中不用if语句,只改写成如下一条语句,行否?count<

(7)该程序中有几处使用了new运算符?

(8)写出该程序执行后的输出结果。

sss

java第二版第二章答案

Java iSW程序设il?(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的捕象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象二数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体:在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象! 3)两者的关系:对象是类的具体实例 2.什么是而向对象的程序设计方法它有那些基本特征 答:而向对象程序设计从所处理的数据入手,以数抵为中心而不是以服务为中心来描述系统。 它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳世性。 它的特征:抽象,封装,继承,多态。 3.在下而的应用中,找出可能用到的对象,对毎一个对象,列出可能的状态和行为。 1)模拟航空预订系统交易的程序 2)模拟银行交易的程序 答:1)航空预订交易: 状态:旅客姓名,身份证号,联系号码,出发地址,抵达地址,出发日期。 行为:订票,领票,买票,退票。 2)银行交易: 状态:客户姓名,账号,身份证号。 行为:存款,取款,『款。 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前而不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前而需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以宜接访问实例变量,调用实例方法,实例方法可以直接访问类变量, 调用类方法:类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法: 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public (公共类)及无修饰符(默认类)两种。 区別:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与

UML第二章作业答案

1.UML如何表示类?类图标中可以指明哪些信息? 类是描述一类对象的特征和行为,类图包含一组、接口及他们之间的关联、依赖和泛化的关系。它不仅显示了信息的结构,同时还描述了系统对象的的行为。 2.什么是类的多重性(关联的基数)?多重性怎么表示? 多重性是对象之间关联的一个重要方面,它说明了在关联中的一个类的对象可以对应另一个类的多个对象。 主要包含一组上下限数,用来指出可被允许生成的实例(instance)数量,即最多可以生成多少数目(上限),最少不得低于多少数目(下限)。关联的两端以"下限..上限"的格式标示出多重性,如图2-12中的1..*。星号(*)代表无指定上限,下限最低为0。如果上下限数相同,标示出一个数目就可以了 3.两者对象之间能够以多种方式关联吗? 关联两边的"employee"和“employer”标示了两者之间的关系,而数字表示两者的关系的限制,是关联两者之间的多重性。通常有“*”(表示所有,不限),“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示n到m个都可以),“m...*”(表示至少m个)。在关联中有一种叫“限定关联”,还有一种谓之自身关联。另外,对象之间的关联就没那么复杂,只是将类的关联实例化而已 4.什么是约束?为什么要对类图附加注释? 约束用来约束MUL成员的语义。约束用举例在大括号内的条件来表示({contrraint}),可以直接放在图中,类图除了在设计新系统方面的用途外,它们还能用来记录一个存在系统(称它为“遗产”)的对象现在如何交互 5.聚集和组成之间有什么区别? 聚合关系完全是概念上的,只是区分了整体与组成部分,没有改变整体与其组成部分之间的关联导航的含义,也没有将整体与部分的生命周期联系起来。而组合是聚合的变种,整体与部分之间有很强的所有关系,也就是说,在组合关系中,一个对象一次只是一个组合的一部分,而在简单的聚合关系中,一个部分可以被好几个整体共享。 另外,在组合关系中,整体负责部分的创建和破坏,部分的生命周期是依附于整体的,要么和整体一起创建和破坏,要么在整体存在后创建或在整体破坏前破坏,总之它不能单独存在。 6.什么叫实现?实现和继承有何相似之处?两者又有何不同之处? 答:实现是类和它的接口之间的关系,可以说成是类实现了它的接口。相似之处:在于类可以使用它的接口中的操作,也可以操作从父类中继承操作。不同之处:类不能使用它的接口中的属性但可以继承父类中的属性。实现是对接口而言的,继承是对类而言的。 7.写出3种可见性的名称,并描述每一种可见性的含义。 答:public,protected,private及package。

第二章 概念部分练习题

第二章概念 内容提要 一、概念的内涵和外延 概念的内涵和外延是概念的两个基本逻辑特征。 概念的内涵是概念对对象本质属性的反映;概念的外延是概念对对象本身的反映。内涵是概念的质的方面,它涉及概念反映的对象“是什么”;外延是概念的量的方面,它涉及的是概念反映的对象“有哪些”。概念内涵和外延与客观对象的本质属性和对象本身并不等同,二者是反映与被反映的关系。概念内涵和外延是人脑对对象本质“属性及对象本身认识的结果,属于主观的东西,而对象的本质属性和对象本身则是客观存在的;只有当它们被反映到人的思维中来,才会成为概念的内涵和外延。 对于某一具体概念的理解就是对于概念内涵和外延的理解。逻辑学要求我们掌握概念的外延关系,因此对概念外延的理解是非常重要的。例如:“国家”的外延应该是指古今中外一切具有“国家性质”这样的实体性的对象,从时间上看指国家产生以来直至现在;从空间上讲指“整个世界”,我们在理解“国家”外延时常犯的错误是把它的外延缩小,理解为“现代国家”。再如:“犯罪行为”这一概念的外延是触犯刑律应受刑法处罚的行为,而非指一般的违法行为,如果我们把一般的赌博行为也理解为“犯罪行为”,就是把这一概念的外延扩大了。 二、概念的种类 (一)依据不同的标准,可以将概念分成不同的种类。根据概念外延所反映的对象的数量,可把概念分为单独概念和普遍概念;根据概念反映的对象是否为集合体,可把概念分为集合概念和非集合概念;根据概念反映的对象是否具有某种属性,可把概念分为肯定概念和否定概念;根据概念反映的对象是否为独立存在的实体,可把概念分为实体概念和属性概念。 在理解概念种类的划分时,难点在集合概念和非集合概念划分标准的掌握。 (二)区别集合概念与非集合概念应注意的问题。 1.集合体和个体的关系,与类和分子间的关系是不同的。 所谓“集合体”是指概念所反映的对象是作为一个整体来认识和使用的,集合体由许多个体有机构成的,但是,集合体所具有的属性,构成该集合体的任一个体并不具有。集合概念的外延不包括构成集合体的个体。 所谓“类”是指概念所反映的对象是由具有相同属性的分子所构成的,其特点是:“类”是对于分子属性的概括和反映,因此,“类”所具有的属性,其分子必然具有。“类”的外延必然包括分子的外延。 例如:“法律词汇”是个集合概念,因为“法律词汇”是由许多法律语词构成的一个集合体,构成“法律词汇”的用语是它的个体;“法律词汇”中的任一个法律用语都不具有“法律词汇”的特点,如我们不能说“诉讼”、“法庭调查”、“法律咨询……是法律词汇,而只能说它们是法律用语。 再如:“警察”是个非集合概念,这一概念是对从事“维护社会治安”这类人员的一种概括,凡从事这种工作的人都称之为“警察”,都具有警察的性质。因此,“警察”是一个类概念,构成这个类的分子就是“警察”中的具体对象,如警察这个类中的张××、王××等。 2.注意在不同的语言环境里,同一语词既可表达集合概念,也可表达非集合概念如: ①警察是维护社会治安的; ②警察是能吃若耐劳的。

面向对象程序设计第二章课后答案说课讲解

面向对象程序设计第二章课后答案

1.什么是命名空间,如何访问命名空间的成员? 【解答】为了解决不同文件中同名变量的问题,C++标准中引入命名空间的概念。命名空间(namespace)是一种特殊的作用域,命名空间可以由程序员自己来创建,可以将不同的标识符集合在一个命名作用域内,这些标识符可以类、对象、函数、变量、结构体、模板以及其他命名空间等。 在作用域范围内使用命名空间就可以访问命名空间定义的标识符。有3种访问方法: (1)直接指定标识符,访问方式为:命名空间标识符名∷成员名。 (2)使用using namespace命令 (3)使用using关键词声明 2.什么是内联函数,它有什么特点?哪些函数不能定义为内联函数? 【解答】用inline关键字声明或定义的函数称为内联函数。C++中对于功能简单、规模小、使用频繁的函数,可以将其设置为内联函数。 内联函数(inline function)的定义和普通函数相同,但C++对它们的处理方式不一样。在编译时,C++将用内联函数程序代码替换对它每次的调用。这样,内联函数没有函数调用的开销,即节省参数传递、控制转移的开销,从而提高了程序运行时的效率。但是,由于每次调用内联函数时,需要将这个内联函数的所有代码复制到调用函数中,所以会增加程序的代码量,占用更多的存储空间,增大了系统空间方面的开销。因此,内联函数是一种空间换时间的方案。 函数体内有循环语句和switch语句,递归调用的函数不能定义为内联函数。 3.什么是函数重载?在函数调用时,C++是如何匹配重载函数的? 【解答】函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致或参数个数不同。编译时编译器将根据实参和形参的类型及个数进行相应地匹配,自动确定调用哪一个函数。使得重载的函数虽然函数名相同,但功能却不完全相同。 在函数调用时,C++是匹配重载函数规则如下:首先寻找一个精确匹配,如果能找到,调用该函数;其次进行提升匹配,通过内部类型转换(窄类型到宽类型的转换)寻求一个匹配,如char到int、short到int等,如果能找到,调用该函数;最后通过强制类型转换寻求一个匹配,如果能找到,调用该函数。4.设置函数参数的默认值有何作用? 【解答】C++中允许函数提供默认参数,也就是允许在函数的声明或定义时给一个或多个参数指定默认值。在调用具有默认参数的函数时,如果没有提供实际参数,C++将自动把默认参数作为相应参数的值 5.什么叫引用,使用引用时需要注意哪些问题? 【解答】引用是一个变量的别名。使用引用时,必须在定义时进行初始化,不能在定义完后再赋值。 6.new运算符的作用是什么?delete运算符的作用是什么?

2.1 类和对象 (第二章 C++面向对象程序设计)

1. 什么是类?类的定义格式?类的成员一般分为哪两部分?它们的区别如何? 答:类是C++语言的数据抽象和封装机制,它描述了一组具有相同属性(数据成员)和行为特征(成员函数)的对象。类的定义格式如下: Class 类名 { private: //私有数据成员和成员函数 public: //共有数据成员和成员函数 protected: //受保护的数据成员和成员函数 }; 类的成员分为数据成员和成员函数两部分。数据成员定义了该类对象的属性,不同对象的属性值可以不同;成员函数定义了该类对象的操作即行为。 2. 类与结构体有什么区别? 答:c语言中的结构体只有数据成员,无函数成员。C++语言中的结构可有数据成员和成员函数。在默认情况下,结构体中的数据成员和成员函数都是共有的,而在类中可以是私有的。从外部可以随意修改结构体变量中的数据,对数据的这种操作时很不安全的,程序员不能通过结构体对数据进行保护和控制;在结构体中,数据和其相应的操作是分离的,使得程序的复杂性难以控制,而且程序的可重用性不好,严重影响了软件的生产效率。 3. 什么是对象?如何定义一个对象?对象的成员如何表示? 答:对象是类的实例,是属性和服务的封装体。对象的定义有两种方法: 方法一:在定义类的同时直接定义。 class 类名 { private: // public: // }对象1,对象2; 方法二:在使用时定义对象。 类名对象1,对象2; 对象的成员的表示有:

(1)通过对象调用成员。 格式:对象名.公有成员 其中,“.“成为对象的选择符,简称点运算符。 (2)通过指向对象的指针调用成员。 格式:指向对象的指针->成员 (3)通过对象的引用调用成员。 格式:对象的引用.成员 4. 什么是构造函数?构造函数有哪些特点? 答:构造函数就是与类名有相同名称的成员函数,它可自动进行对象的初始化。 特点:它没有返回值说明;它不能被继承;它可以有默认实参;它不可以是虚(virtual)的;不可以对它取地址;不能用常规调用方法调用构造函数;当定义对象时,编译程序自动调用构造函数。 5. 什么是析构函数?析构函数有哪些特点? 答:析构函数的作用是当对象生命期结束后,收回对象占用的资源。 析构函数的特点是:1) 析构函数名是在类名前加以符号“~”。2) 析构函数没有参数、返回类型和修饰符。3) 一个类中至多有一个析构函数,如果程序员没有定义析构函数,那么系统会自动地加入一个析构函数。4) 不能显式地调用析构函数,而是由系统自动调用。 6. 什么是默认构造函数和默认析构函数? 答:若用户未显式定义一个类的构造函数,则C++语言提供一个默认的构造函数,也叫默认构造函数。同样,如果一个类没有显式的定义类的析构函数,则编译器将合成一个,也就是默认的析构函数。 7. 什么是复制构造函数?它的功能和特点是什么? 答:复制构造函数是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构件及初始化。 复制构造函数的功能是用一个已有的对象来初始化一个被创建的同类对象,是一种特殊的构造函数,具有一般构造函数的所有特性,它的特殊功能是将参数代表的对象逐域拷贝到新创建的对象中。 在C++中,下面三种对象需要拷贝的情况。因此,复制构造函数将会被调用。

C++程序设计与应用基础第二章 类和对象习题答案

C++程序设计与应用基础第二章类和对象习题答案 1、请完成下列填空题 1)在C语言中,编程的单位是___函数__:在C++语言中,编程的单位是____类__。 2)在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。 #include class MyClass { pub1ic: ——MyClass(int a){x=a;}//为x置值 ——int GetNum(){return x;} //取x值 private: int x; }; void main() { Myclass my(10); Cout<

6)假定用户没有给一个名为MyClass的类定义构造函数,则系统对其定义的默认构造函数形式为___MyClass()_____。 2、编程题 1)定义一个复数类imaginary。用友元函数实现该类的加、减、乘和除运算。 答案: class Imaginary { public: Imaginary(float a,float b); friend Imaginary Add(Imaginary& img1,Imaginary& img2); friend Imaginary Sub(Imaginary& img1,Imaginary& img2); friend Imaginary Mul(Imaginary& img1,Imaginary& img2); friend Imaginary Div(Imaginary& img1,Imaginary& img2); private: float x,y; }; Imaginary::Imaginary(float a,float b) { x=a; y=b; } Imaginary Add(Imaginary& img1,Imaginary& img2) { float a,b; a=img1.x+img2.x;

c++第2章 类和对象习题

《面向对象程序设计》习题班级:学号:姓名:名单序号:成绩: 第2章类与对象 一、选择题(共26分,每题1分) 1.下列有关类的说法不正确的是()。 A.对象是类的一个实例 B.任何一个对象只能属于一个具体的类 C.一个类只能有一个对象 D.类与对象的关系和数据类型与变量的关系相似 2.下面()项是对构造函数和析构函数的正确定义。 A.void X::X(), void X::~X() B.X::X(参数), X::~X() C.X::X(参数), X::~X(参数) D.void X::X(参数), void X::~X(参数) 3.()的功能是对象进行初始化。 A.析构函数 B.数据成员 C.构造函数 D.静态成员函数 4.下列表达方式正确的是()。 A.class P{ B. class P{ public:public: intx=15;int x; void show(){cout<

面向对象程序设计第二章课后答案

1.什么是命名空间,如何访问命名空间的成员? 【解答】为了解决不同文件中同名变量的问题,C++标准中引入命名空间的概念。命名空间(namespace)是一种特殊的作用域,命名空间可以由程序员自己来创建,可以将不同的标识符集合在一个命名作用域内,这些标识符可以类、对象、函数、变量、结构体、模板以及其他命名空间等。 在作用域范围内使用命名空间就可以访问命名空间定义的标识符。有3种访问方法: (1)直接指定标识符,访问方式为:命名空间标识符名∷成员名。 (2)使用using namespace命令 (3)使用using关键词声明 2.什么是内联函数,它有什么特点?哪些函数不能定义为内联函数? 【解答】用inline关键字声明或定义的函数称为内联函数。C++中对于功能简单、规模小、使用频繁的函数,可以将其设置为内联函数。 内联函数(inline function)的定义和普通函数相同,但C++对它们的处理方式不一样。在编译时,C++将用内联函数程序代码替换对它每次的调用。这样,内联函数没有函数调用的开销,即节省参数传递、控制转移的开销,从而提高了程序运行时的效率。但是,由于每次调用内联函数时,需要将这个内联函数的所有代码复制到调用函数中,所以会增加程序的代码量,占用更多的存储空间,增大了系统空间方面的开销。因此,内联函数是一种空间换时间的方案。 函数体内有循环语句和switch语句,递归调用的函数不能定义为内联函数。 3.什么是函数重载?在函数调用时,C++是如何匹配重载函数的? 【解答】函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致或参数个数不同。编译时编译器将根据实参和形参的类型及个数进行相应地匹配,自动确定调用哪一个函数。使得重载的函数虽然函数名相同,但功能却不完全相同。 在函数调用时,C++是匹配重载函数规则如下:首先寻找一个精确匹配,如果能找到,调用该函数;其次进行提升匹配,通过内部类型转换(窄类型到宽类型的转换)寻求一个匹配,如char到int、short到int等,如果能找到,调用该函数;最后通过强制类型转换寻求一个匹配,如果能找到,调用该函数。 4.设置函数参数的默认值有何作用? 【解答】C++中允许函数提供默认参数,也就是允许在函数的声明或定义时给一个或多个参数指定默认值。在调用具有默认参数的函数时,如果没有提供实际参数,C++将自动把默认参数作为相应参数的值 5.什么叫引用,使用引用时需要注意哪些问题? 【解答】引用是一个变量的别名。使用引用时,必须在定义时进行初始化,不能在定义完后再赋值。 6.new运算符的作用是什么?delete运算符的作用是什么? 【解答】在C++程序中,new是动态分配内存的运算符,自动计算需要分配的空间。delete是撤销动态申请的内存运算符。delete与new通常配对使用,建立堆对象时使用new运算符、删除堆对象时delete使用运算符。 7、 #include"stdafx.h"

第二章 社会调查研究的主要类型

一社会调查研究的分类 1根据调研任务的性质分:理论性调查研究和应用性调查研究(理论研究与应用研究) 2根据调查研究对象的范围分:普查(整体调查、全面调查)、抽样调查、典型调查、个 案调查 3根据调查研究的作用和目的分:探索性调查研究、描述性调查研究、解释性调查研究 4根据调查的时间性分:横剖式调查研究、纵贯式调查研究(横剖研究与纵贯研究) 5根据调查的基本方式方法分:统计调查(问卷调查)、实地研究(蹲点调查) 6根据调查研究的层次分:宏观调查研究、微观调查研究 7根据调查研究的区域分:农村调查、城市调查、地区调查、全国性调查等 8根据调研题目的范围分:综合性调查、专题性调查 9根据调查研究的领域分:家庭调查、舆论调查(民意测验)、人口调查、企业调查、市 场调查、犯罪调查、劳动问题调查、教育问题调查、民族问题 调查、社会福利调查、社区调查等 10根据资料分析方法分:定性研究、定量研究 二应用性调查研究与理论性调查研究 1应用性调查研究是侧重解答各个实际工作部门、各个社会领域中的具体问题。如:社会福利、社会保障、社会舆论、城乡关系、劳动就业、青少年问题、老年问题、妇女问题、城市问题、犯罪问题、环境污染问题、政策评估研究、社会指标研究等 2理论性调查研究是通过对社会现实问题的调查来发展和丰富社会理论。它的主要任务是在于解答社会科学领域和各个实践领域中的理论问题 3理论性调查研究是采用经验研究方法,属于经验型-理论研究。 三普查、抽样调查、典型调查、个案调查 1普查(全面调查)是指对较大范围的地区或部门中的每一个对象都进行调查。常用于行 政统计工作中。 2普查的特点:(1)资料的准确性、精确性和标准化程度较高,可做统计汇总和分类比较 (2)普查的结论具有很高的概括性和普遍性 (3)普查的项目较少,资料缺乏深度 (4)耗时间、耗人力、耗资金 3抽样调查是指从调查对象的总体中抽取一些个人或单位作为样本,并以样本的状况来推论总体的状况。 抽样调查的目的是从许多“点”的情况来概括“面”的情况。 抽样调查常与问卷方法相结合。 4典型调查是从调查对象的总体中选取一个或几个有代表性的单位进行全面、深入的调查。 典型调查的目的是通过深入地“解剖麻雀”,以少量典型来概括或反映全局。 典型调查就是一个由特殊到一般的过程。 典型调查的特点:(1)调查对象是有意识地主观选取的,它们要具有典型性(代表性) (2)典型调查节省时间、人力、资金 (3)得出的结论并不一定能适用与总体或全局 5重点调查是从调查对象的总体中主观选取少数单位进行调查。 重点调查的目的是通过这几个少数单位来反映总体的数量状况。 重点调查的特点:(1)主要了解调查总体的数量状况 (2)对象要在总体占有重要地位或在总体的数量总值中占有较大比重 (3)节省时间、人力,结果可反映全局情况 (4)只适合少数调查总体,适用的范围较小,且调查缺乏深度 6个案调查是指从调查总体中先取一个或几个调查对象进行深入的研究。它的目的不是要了解总体,而是要详细描述一个社会事物的全貌和发展过程。个案调查是实地 社会调查的主要方式。

第二章概念

第二章概念 第一节概念的概述 一、什么是概念 概念是反映思维对象及其特有属性的思维形态。 1、思维对象及其特有属性 一切客观事物都可以是人类认识和思维的对象,我们称之为思维对象。 概念是通过反映思维对象的特有属性来反映思维对象的。事物的属性包括事物的性质及事物的关系两方面。 事物的属性有的是特有属性,有的是共有属性。事物的特有属性是指为一类事物所独有而别类事物所不具有的属性。 在特有属性中,有些是本质属性,有些是非本质属性。本质属性是决定一事物之所以成为该事物而区别于其他事物的属性。 本质属性 特有属性 非本质属性 属性 共有属性 2、概念的形成和发展 概念是思维的“细胞”,概念的形成是一个由感性到理性、从个别到一般,从局部到整体不断深化的认识过程。在这个认识过程中,运用比较、分析、综合、抽象、概括等逻辑方法,逐步舍掉具体的、现象的、感性的东西,最后只剩下一般的、本质的、理性的东西。 概念形成之后不是固定不变的。首先,概念是要随着人的认识活动的深入而不断发展变化的。其次,客观事物本身的发展变化也引起概念的发展变化。 3、概念的作用 ①概念是基本的思维形态之一,是构成思维的最小单位。离开概念,不能形成命题,更不能进行推理。

②概念是科学思维的总结。 二、概念和语词 1、概念与语词的密切联系 概念是语词的思想内容,语词是概念的语言表达形式,物质外壳,物质载体。 概念这种思维形式要保存下来,必须借助于有声有形的语词。 2、概念与语词的区别 ①概念要用语词表达,但并非所有语词都表达概念。 ②同一概念可以用不同的语词来表达。 ③同一语词可以表达不同的概念。 ④二者分属于不同的学科领域研究。 第二节概念的内涵和外延 一、什么是概念的内涵和外延 1、概念的内涵 概念的内涵就是概念所反映的对象的特有属性或本质属性。 2、概念的外延 概念的外延就是对思维对象分子范围的反映,即通常所谓概念的适用范围。 3、关于虚概念 虚概念也称空概念,是反映空类的概念。 二、概念的内涵和外延之间的反变关系 概念的内涵有多少之分,外延有大小之分。两者之间是相互制约的,一个概念的内涵增加,概念的外延也就缩小;反之,一个概念的内涵减少,概念的外延也就扩大。反过 来,一个概念的外延扩大,它的内涵就减少;一个概念的外延缩小,它的内涵也 就增加。这就是概念内涵与外延之间的反变关系。 概念的内涵与外延之间的反变关系只适用于具有属种关系或种属关系的概念,不适用于其他关系的概念。 什么是属种关系?如果概念a的外延包括了概念b的全部外延,而概念b的全部外延仅构成了概念a外延的一部分,那么概念a与概念b的外延关系就称为 属种关系。概念a为属概念,概念b为种概念。(属种概念具有相对性)

相关文档