C++习题(静态成员)
C++复习题(3)
private:
int R1,R2;
};
void R::print()
{
cout<<R1<<":"<<R2<<endl;
}
void R::print() const
{
cout<<R1<<";"<<R2<<endl;
}
void main(){
R a(5,4);
a.print();
double A::*pm;//定义指向A类double类型指针pm
pm = &A::x;//将pm指向A类中的x成员;
pa->*pm = 8.8;//通过pa和pm给其成员x赋值
double *spm = &(A::z);//定义指向A类double类型静态成员指针spm
*spm = 9.9;//通过spm给其成员z赋值}
{
X=a;
}
void Print()
{cout<<"X= "<<X<<endl;}
private:
int X;
const float Y;
};
void main(){
const MyClass my(10);
my.SetX(20);//常对象不能访问普通成员函数
my.Print();//常对象不能访问普通成员函数
{cout<<"X= "<<X<<endl;}
private:
int X;
C++程序练习题及答案
1、在关键字private 后面定义的成员为类的()成员。
A、私有2、关于函数模板叙述正确的是()。
C、通过使用不同的类型参数,函数模板可以生成不同类型的函数3、C 语言的编译系统对宏命令的处理是( ) 。
D、在对源程序中其它成分正式编译之前进行4、软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的()。
A、可维护性5、采用重载函数的目的是()。
D、使用方便,提高可读性参考答案D6、派生类的对象对它的基类成员中()是可以访问的。
A、公有继承的公有成员;7、在公有继承的情况下,基类成员在派生类中的访问权限()。
B、保持不变8、关于面向对象系统分析,下列说法中不正确的是()。
B、面向对象分析阶段对问题域的描述比实现阶段更详细9、假定一个类对象数组为A[n] ,当离开它定义的作用域时,系统自动调用该类析构函数的次数为( ) 。
C、n10、关于函数的返回值说法正确的是()。
A、由return 语句返回时,只带回一值,其类型在函数定义时确定。
11、假定AA为一个类,a 为该类公有的数据成员,px 为指向该类对象的一个指针,则访问px 所指对象中数据成员a 的格式为()。
C、px->a12、有以下程序#include <iostream.h>void main( ){ char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};cout<<p[3]<<endl;}执行后输出结果是()B、abbd13、友员的作用之一是()A、提高程序的运行效率14、假定AA为一个类,int a() 为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。
A、int AA::a()15、下列关于函数的说法中,不正确的是()。
C习题及答案
第一、二章习题1.关于C++语言,下列说法不正确的是A.C++具有简洁、高效和接近汇编语言的特点B.C++本身几乎没有支持代码重用的语言结构C.C++语言不是一种纯面向对象的语言D.C++支持面向对象的程序设计,这是它对C的重要改进B2.使用关键字________说明的函数为内联函数。
inline3.C++支持两钟多态性,即________和________。
编译时的多态性运行时的多态性4.在下面横线处填上适当字句,使程序输出结果为5,10 # include <iostream.h>void main(){________int n=5;int& ________=n;ref=ref+5;cout<<n<<”,”<<ref;}const ref5.const int *p;表明A.p本身是常量B.p指向一个固定的int类型的地址,而p的内容可以修改C.p只能指向一个整型常量D.p只能指向一个被const修饰的int类型的常量C6.数据封装给数据提供了与外界联系的________,只有通过这些________,使用规范的方式,才能访问数据。
标准接口接口7.在下面横线处填上适当字句,使程序完整。
int arr[]={1,2,3,4,5};________index(int i){return a[i];}void main(){index(3)= ________;//将a[3]改为6}int & 68.#include <iostream.h>void main(){int *p,i,j;cin>>j;//输入4p=new int[j];if(!p){cout<<”Allocation error\n”;} for(i=0;i<j;i++)p[i]=i;for(i=0;i<j;i++)cout<<p[i]<<““; cout<<endl;delete []p;}输出为:4(这是输入的数据)0 1 2 39.#include <iostream.h>void comp(const int&,int&);int main(){int n=6,t=10;cout<<”n=”<<n<<”,t=”<<t<<endl;comp(n,t);cout<<”n=”<<n<<”,t=”<<t<<endl;return 0;}void comp(const&in1,int &in2){in2=in1*10+in2;}输出为:n=6, t=10n=6,t=7010.下列属于C++头文件约定使用的扩展名的是i..cppii..hppiii..civ..c++B11.C++提供了一种新的注释方式:从“//”开始,直到________,都被计算机当做注释。
C 课后习题答案第七章
C++作业答案第7章继承7.1 选择题1.在c++中,类与类之间的继承关系具有( c )。
(a) 自反性 (b) 对称性 (c) 传递性 (d) 反对称性2.下列关于类的继承描述中,( a,b )是错误的。
(a) 派生类可以访问基类的所有数据成员,调用基类的所有成员函数(b) 派生类也是基类,所以基类具有派生类的全部属性和方法(c) 继承描述类的层次关系,派生类可以具有与基类相同的属性和方法(d) 一个基类可以有多个派生类,一个派生类可以有多个基类3.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( a )。
(a) public 成员 (b)private成员(c) protected成员 (d)友员4.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( b )。
(a) public 成员 (b)private成员(c) protected成员 (d)友员5.当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( c )。
(a) public 成员 (b)private成员(c) protected成员 (d)友员6.不论派生类以何种方式继承基类,都不能使用基类的( b )。
(a) public 成员 (b)private成员(c) protected成员 (d)public 成员和protected成员7.下面描述中,错误的是( b, c )。
(a) 在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问(b) 在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问(c) 在基类定义的public和protected成员在保护继承的派生类中不可见(d) 在派生类中不可见的成员要变成可访问的需进行访问声明8.在c++中,不能被派生类继承的函数是( b,c )。
(a) 成员函数 (b)构造函数(c) 析构函数 (d)静态成员函数9.在创建派生类对象时,构造函数的执行顺序是( d )。
c++语言程序设计教程(第二版)习题解答(填空选择部分)_沈显军_杨进才_张勇
1.1习题1解答1.(1)机器语言是计算机直接理解执行的语言,由一系列(二进制)指令组成,其助符构成了汇编语言;接近人的自然语言习惯的程序设计语言为高级语言。
(2)结构化程序设计方法主要内容有:自顶向下,逐步求精;面向对象方法将现实世界中的客观事物描述成具有属性和行为的对象,抽象出共同属性和行为,形成类。
(3)C++程序开发通常要经过5个阶段,包括:编辑,编译,连接,运行,调试。
首先是编辑阶段,任务是编辑源程序,C++源程序文件通常带有.cpp扩展名。
接着,使用编译器对源程序进行编译,将源程序翻译为机器语言代码(目标代码),过程分为词法分析、语法分析、代码生成3个步骤。
在此之前,预编译器会自动执行源程序中的预处理指令,完成将其他源程序文件包括到要编译的文件中,以及执行各种文字替换等。
连接器的功能就是将目标代码同缺失函数的代码连接起来,将这个“漏洞”补上,生成可执行文件。
程序运行时,可执行文件由操作系统装入内存,然后CPU从内存中取出程序执行。
若程序运行进程中出现了错误,还在需要对程序进行调试。
(4)对象与对象之间通过消息进行相互通信。
(5)类是具有相同属性和行为的一组对象的抽象;任何一个对象都是某个类的一个实例。
(6)多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
(7)面向对象的软件开发过程主要包括面向对象的方法分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的维护。
(8)泛型程序设计是指在程序设计时,将数据类型参数化,编写具有通用性和可重用的程序。
(9)# include <iostream>是一条预处理指令(语句),在编译(或预处理)时由编译器(或预编译器)执行,其功能是将iostream文件包含(复制)到指令处。
(10)C++中使用cin作为标准输入流对象,通常代表键盘,与提取操作符>>连用;使用cout作为标准输出流对象,通常代表显示设备,与<<连用。
VC习题参考答案
VC习题参考答案1.7指针和引用55.已知intd=5,某pd=&d,b=3;求下列表达式的值。
A.某pd某bB.++某pd-bC.某pd++D.++(某pd)答:15,3,5,656.选择填充。
(1)选择正确的说明语句为()。
A.intN['b'];B.intN[4,9];C.intN[][];D.int某N[10];答:B(2)若有定义:inta=100,某p=&a;则某p的值是()。
A.变量p的地址B.变量a的地址值C.变量a的值D.无意义答:C.(3)下述程序的输出结果是()。
#includevoidmain(){inta[5]={2,4,6,8,10};int某p=a,某某q=&p;cout<A.4,4B.2,2C.4,2D.4,5答:B(4)下述程序片段的输出是()。
inta[3][4]={{1,2,3,4},{5,6,7,8}};int某,某p=a[0];某=(某p)某(某p+2)某(某p+4);cout<A.15B.14C.16D.13答:A(5)若有以下定义,则下列对数组引用正确的是()。
int(某q)[3]=newint[2][3];A.q[2][3]B.某qC.某(某q+2)D.某(某(q+2)+3)答:C(6)若要用如下程序片段使指针变量p指向一个存储动态分配的存储单元:float某p;p=(float某)newfloat;则空白处应填入:A.float某B.某floatC省略;D.(float)(7)下列表示引用的方法中,()是正确的。
已知:intm=10;A.int&某=m;B.int&y=10;C.int&z;D.float&t=&m;答:A57.分析下列程序的结果。
#includeint&fun(intn,int[]){int&m=[n];returnm;}voidmain(){int[]={15,4,3,2,1,0};fun(3,)=10;cout<答:1058.用指针作为函数的参数,设计一个实现两个参数交换的函数。
c++复习题
C++复习题本书课后的习题及以下一、选择题:(60题)01、下列关于C++函数的叙述中,正确的是( )。
A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值C)函数在被调用之前必须先声明 D)函数不能自己调用自己02、下列关于类和对象的叙述中,错误的是( )。
A)一个类只能有一个对象 B)对象是类的具体实例C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系03、在C++中,用于实现运行时多态性的是( )。
A)内联函数 B)重载函数 C)模板函数 D)虚函数04、下列关于运算符重载的叙述中,正确的是( )。
A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参05、对于语句 cout<<x<<endl;错误的是描述是( )。
A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行C)“x”是一个变量D)“<<”称作提取运算符06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是( )。
class MyBASE{ private: int k;public: void set(int n){ k=n;}int get( )const{ return k;} };class MyDERIVED: protected MyBASE{ protected: int j;public: void set(int m, int n){ MyBASE::set(m); j=n;}int get( ) const { return MyBASE::get( )+j; } };A)4 B)3 C)2 D)107、已知在一个类体中包含如下函数原型: Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是( )。
c++复习题及答案
1、填空题()多态分为:专用多态和通用多态。
2、选择题(10分)下面对构造函数的描述不正确的是(C )A 可以重载B 其名字与类名相同C 可以显式调用构造函数D 构造函数是成员函数E 构造函数不能是虚函数3、判断题(正确的请写T,错误的请写F)(20分)静态成员函数可以直接调用类中说明的非静态成员。
(F)windows应用程序采用基于消息的事件驱动运行机制。
(T)(一)填空题在类体内使用关键字(static )说明的成员称为静态成员。
2、重载的函数要求参数的(个数)和(类型)不同。
3、如果要表示某个变量的值不能修改,用修饰符(const )限制。
4、对函数int fun( int x,int y) 中的参数x指定默认值10 正确的声明方式是(int fun(int y,int x=10) )。
5、C++语言规定,成员函数如果被定义在类体内,则为默认为(内联成员函数)。
6、在类层次结构中,创建子类对象时,(派生类)构造函数最后被执行。
7、C++规定,运行多态性通过(基)类的指针或者(引用)调用(虚函数)来实现。
8、派生类的生成过程经历了三个步骤:(吸收基类成员)、(改造基类成员)和(添加新的成员)。
9、面向对象程序设计的4个基本特征是(抽象)、(继承)、(封装)、(多态)。
10、Windows应用程序采用基于(消息)的事件驱动运行机制。
11、通常将用来派生新类的类称为(基类),又称为父类,而将派生出来的新类称为(派生类),又称为子类。
12、含有(纯虚)函数的类称为抽象类。
13、引用与被引用的实体具有相同的(地址)。
14、类成员的访问权限有3种(共有类型)、(私有类型)、(保护类型)。
15、通过函数改变实参的数据,c++ 可以通过( 指针)或者(引用)实现。
16、c++通过(函数重载)实现静态多态性,其(形参个数或类型)必须不同。
18、c++类的用途有两种,一种是生成类的对象,另一种是通过(继承)派生出新类。
c课后习题解答
第6章;类和对象(一)练习题6判断题×1.使用class定义的类,其默认的访问权限是公有的,使用struct定义的类,其默认的访问权限是私有的。
×2.类中的成员函数都是公有的,数据成员都是私有的。
×3.定义在类体内的成员函数是内联函数,定义在类体外的成员函数不能是内联函数。
√4.类定义后,它的成员个数及名称就不会再被改变了。
×5.定义或说明对象时,系统会自动调用构造函数为创建的对象初始化。
如果类中没有定义任何构造函数时,就无法给定义的对象初始化。
√6.定义一个对象时,系统只为该对象的数据成员开辟内存空间,而成员函数是同类对象共享的。
√7.对象成员的表示方法与结构变量成员的表示方法相同。
√8.创建对象时系统自动调用相应的构造函数为对象初始化,没有相应的构造函数时,系统会自动生成。
√9.构造函数是一个其名与类名相同的特殊的成员函数。
×10.析构函数是一个函数体为空的成员函数。
√11.构造函数和析构函数都是系统自动调用的成员函数。
×12.构造函数和析构函数都可以重载。
√13.成员函数与一般函数一样可以重载、内联和设置参数的默认值。
×14.静态成员是指静态对象的成员。
×15.静态数据成员必须在构造函数的成员初始化列表中进行初始化。
√16.静态成员都可以使用类名加作用域运算符的方法来引用。
×17.静态成员函数中引用静态数据成员和非静态数据成员的方式是相同的。
√18.常成员指的是类体内使用const关键字说明的常数据成员和常成员函数。
×19.常数据成员在常成员函数中的值是不允许改变的,而在非常成员函数中是允许改变的。
√20.常对象需要引用常成员函数,而不能引用非常成员函数。
×21.常对象的数据成员都是常数据成员。
√22.友元函数是说明在类体内的非成员函数,它可以访问类中的所有成员。
×23.可以把一个一般函数说明为某类的友元函数,也可以将某类的成员函数说明为另类的友元函数。
东师《C++程序设计(高起专)2013春第一次在线作业
B. 正确
满分:2 分
10. 在默认参数函数的原型中,所有取缺省值的参数都必须出现在不取缺省值的参数的左边。
A. 错误
B. 正确
满分:2 分
11. 类和对象之间的关系是抽象和具体的关系。
A. 错误
B. 正确
满分:2 分
12. 在C++中,用数组、指针、和引用作为函数参数,都能够将参数值带回。
东北师范东师2014春2013秋2013
东北师范东师2014春2013秋2013春第一次在线作业 本作业是随机作业答案没办法上传,需要的看我注册名字 索取
试卷总分:100 测试时间:--
单选题
判断题
东师是随机,要答案的查看我的注册名字来 索取 、单选题(共 20 道试题,共 60 分。)
满分:3 分
4. 类MyA的拷贝初始化构造函数是()。
A. MyA()
B. MyA(MyA*)
C. MyA(MyA&)
D. MyA(MyA)
满分:3 分
5. 已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。
A. void print( ) const;
A. 面向对象
B. 即可面向过程,又可面向对象
C. 面向过程
D. 面向系统
满分:3 分
18. 在C++中,编写一个内联函数Fun,使用int类型的参数,求其平方并返回,返回值也为int类型,下列定义正确的是()。
A. int Fun(int x){return x*x;}
C. 类中的函数成员在类体之外定义时必须要与类声明在同一文件中
c++期末考试习题
一、填空题1. 类是一组具有共同的特征和__属性_____行为特征的对象的抽象。
2. 在面向对象程序设计中,一个对象向另一个对象发出的请求被称为_ _消息____ 。
3. 用class作关键字进行类声明,默认的访问属性是private(私有的)___4. 函数名重载是指同一作用域内的多个函数使用相同的函数名,这些同名函数要从和_参数类型和参数个数____进行区分。
5. 构造函数的作用是__用来对对象进行初始化____ 。
6. 多重继承指一个派生类可以有__多个基类______ 。
7. 保护继承下,基类中所有公有成员在派生类中的访问属性是__保护的____ 。
8. 假定要访问一个对象指针p所指对象中的b成员,则表示方法___ p.b ______。
9. 若需要把一个函数“void F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:___ friend void F()____ _。
10. Static成员函数与普通成员函数的区别是_______。
11. 若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用___ iostream ____头文件。
1. 关键字 _____C_______ 说明对象或变量初始化后不会被修改。
a. staticb. publicc. constd. inline2. 如果调用带有默认参数的函数时缺少一个参数,则____B_____参数就作为这一参数。
a. 第一个b. 最后一个c. 中间一个d. 以上都不是3. 成员函数可声明为静态的,条件是它不访问 ____C______类成员。
a. 静态b. 常数c. 非静态d. 公共4. 内联函数执行起来比标准函数_____B__________。
a. 更慢b. 更快c. 次数更多d. 以上都不是5. 默认参数的值由_________C__________提供。
a. 该函数b. 调用程序c. 上述二者d. 以上都不是6. 在 C++ 中,混合类型表达式_____A________。
C++试题及答案 (五)
C++程序设计模拟试卷(五)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个就是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1、静态成员函数没有()A、返回值B、this指针C、指针参数D、返回类型答案:B解析:静态成员函数就是普通的函数前加入static,它具有函数的所有的特征:返回类型、形参,所以使用静态成员函数,指针可以作为形参,也具有返回值。
静态成员就是类具有的属性,不就是对象的特征,而this表示的就是隐藏的对象的指针,因此静态成员函数没有this 指针。
静态成员函数当在类外定义时,要注意不能使用static关键字作为前缀。
由于静态成员函数在类中只有一个拷贝(副本),因此它访问对象的成员时要受到一些限制:静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员;若要访问非静态成员时,必须通过参数传递的方式得到相应的对象,再通过对象来访问。
2、在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其她内部管理操作的函数就是()A、友元函数B、虚函数C、构造函数D、析构函数答案:C解析:定义构造函数作用就就是初始化对象,而析构函数释放对象空间。
虚函数用于完成多态性,友元增加访问方便性。
3、所有在函数中定义的变量,都就是()A、全局变量B、局部变量C、静态变量D、寄存器变量答案:B解析:变量存储类可分为两类:全局变量与局部变量。
(1)全局变量:在函数外部定义的变量称为全局变量,其作用域为:从定义变量的位置开始到源程序结束。
全局变量增加了函数之间数据联系的渠道,全局变量作用域内的函数,均可使用、修改该全局变量的值,但就是使用全局变量降低了程序的可理解性,软件工程学提倡尽量避免使用全局变量。
(2)局部变量:在函数内部定义的变量称为局部变量,其作用域为:从定义变量的位置开始到函数结束。
局部变量包含自动变量(auto)静态变量(static)以及函数参数。
第五章答案类、构造函数、拷贝构造函数、静态成员、友元
5.3 练习题解答1.什么是类?为什么说类是一种抽象数据类型的实现?答:类是C++语言中的一种数据类型。
这种数据类型是一种封装体,它既包含有数据结构,又包含有对这些数据所进行的若干操作。
类的获得是通过对于所要解决的问题中的客观实体的抽象,这种抽象不仅包含了它的属性,同时还有对这些属性的操作,即方法。
对实体的这种抽象可用一个标识符来表示,并可对它引用及操作,这种标识符称为类。
可见,类是抽象数据类型的一种实现。
2.类的定义格式如何?类的说明部分和实现部分各包含些什么?答:类的定义格式包含说明部分和定义部分。
类的说明部分主要有类头和类体两部分。
类头定义格式如下所示。
class<类名>其中,class是关键字,<类名>同标识符。
类体是由一对花括号括起来的若干成员,成员中包含数据成员和成员函数,右花括号后边有一个分号。
{〈数据成员说明〉〈成员函数说明〉};成员又分为不同的访问权限,有公有(puLlic)、私有(private)和保护(protected)3种。
类的实现部分是用来定义类中说明的成员函数(没有定义)在该部分定义。
如果类中所有成员函数都已在类体内定义了,则实现部分可以省略。
3.类的成员一般分为哪两部分?这两部分有何区别?答:类的成员一般分为数据成员和成员函数两个部分。
前一部分是用来表示状态的数据,后一部分是用来改变状态的方法(即函数)。
简单地讲,前部分是变量,后部分是函数,后部分的函数是用来对前部分的变量进行操作的。
4.从访问权限角度如何区分不同种类的成员?它们各自的特点是什么?答:从访问权限角度可以将类中成员分为三种:公有的,私有的和保护的。
公有成员可以被类体内外的程序所访问,它通常作为一个类体的对外接口。
私有成员只能对类体内的程序所访问,在类体外是不可见的。
它是类中的被隐藏部分。
保护成员对一般类而言视同私有成员,对派生类同公有成员。
它可以被其派生类中的程序访问。
5.作用域运算符的功能是什么?它的使用格式如何?答:作用域运算符::是C十十语言中的一种运算符,用来指明某个标识符的作用域,主要用于标识类中成员。
C++程序设计练习题及答案第五章类与对象
第5章类与对象5.1 选择题1. 在下列结构变量的定义中,不正确的是( d )。
(a) struct employee{ char name[ 20 ] ;long code ;} emp ;(b) struct{ char name[ 20 ] ;long code ;} emp ;(c) struct employee{ char name[20];long code;} ;employee emp;(d) struct{ char name[20];long code;} employee;employee emp;2.已知有职工情况结构变量emp定义为:struct employee{ char name[ 20 ] ;long code ;struct{ int year ;int month ;int day ;} birth ;} emp ;下列对 emp 的 birth 正确赋值方法是( d )。
(a) year = 1980 ; month = 5 ; day = 1 ;(b) birth.year = 1980 ; birth.month = 5 ; birth.day = 1 ;(c) emp.year = 1980 ; emp.month = 5 ; emp.day = 1 ;(d) emp.birth.year = 1980 ; emp.birth.month = 5 ; emp.birth.day= 1 ;3.假定有以下声明和定义,则下面引用形式错误的是( b )。
1struct student{ int num ;float score ;} stu[3] = {{1001,80},{1002,75},{1003,91}}, *p = stu ; (a) p->num (b) (p++).num (c) (p++)->num (d) (*p).num4.下列四个运算符中,优先级最低的是( a )。
C++ 练习题
C++初步知识1.1判断题√1.C语言是C++语言的一个子集。
C++语言继承了C语言。
×2.引用是一种变量,它也有值和地址值。
√3.引用是某个变量的别名,引用是被绑定在被引用的变量上。
√4.创建引用时要用一个同类型的变量进行初始化。
×5.C++语言中,函数可以用原型说明,也可用简单说明。
×6.没有返回值的函数不能设置为内联函数。
×7.函数可以设置默认的参数值,默认参数值必须设置在函数定义时的形参上。
1.2 单选题1.下列关于面向对象概念的描述中,错误的是(C )。
A.面向对象方法比面向过程方法更加先进B.面向对象方法中使用了一些面向过程方法中没有的概念C.面向对象方法替代了结构化程序设计方法D.面向对象程序设计方法要使用面向对象的程序设计语言2.下列关于类的描述中,错误的是( A )。
A.类就是C语言中的结构类型B.类是创建对象的模板C.类是抽象数据类型的实现D.类是具有共同行为的若干对象的统一描述体3.下列关于对象的描述中,错误的是(C )。
A.对象是类的一个实例B.对象是属性和行为的封装体C.对象就是C语言中的结构变量D.对象是现实世界中客观存在的某种实体4.下列关于创建一个int型变量的引用,正确的是(A )。
A.int a(3),&ra=a;B.int a(3),&ra=&a;C.double d(3.1);int &rd=d;D.int a(3),ra=a;5.下列关于引用概念的描述中,错误的是( A )。
A.引用是变量,它具有值和地址值B.引用不可以作数组元素C.引用是变量的别名D.创建引用时必须进行初始化6.已知:int a(5),&ra=a;下列描述中,错误的是( D )。
A.ra是变量a的引用,即为变量的别名B.ra的值为5C.ra的地址值为&a D.改变ra的值为10,变量a值仍为5 7.下列关于设置函数默认的参数值的描述中,错误的是( C )。
C++课后习题解答
第1章面向对象的方法学1.什么是面向对象方法学?解:面向对象方法学就是尽量模拟人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间(即问题域)与实现解法的解空间(即求解域)在结构上尽可能一致。
2.什么是对象?它与传统的数据有何关系?有什么不同?解:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。
它与传统数据有本质的不同,传统数据是被动地等待对它进行处理,对象是进行处理的主体。
3.什么是封装性和继承性?解:封装是面向对象方法的一个重要特点,即将对象的属性和行为封装在对象的内部,形成一个独立的单位,并尽可能隐蔽对象的内部细节。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
4.什么是多态性?解:多态性是面向对象方法的重要特征。
不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
5.试写出学生管理系统中所涉及的类(属性和方法)。
学生管理系统中学生信息有:姓名、学号、年龄、成绩;学生管理系统完成学生信息输入、学生信息输出、插入学生信息、删除学生信息、查找学生信息。
解:class Student{private:char cName[12]; //姓名long lNum; //学号int age; //年龄float fGrade; //成绩public:void Input(); //输入学生信息void Print(); //输出学生信息void Insert(); //插入学生信息void Del(); //删除学生信息void Find(); //查找学生信息};6.目前常用的面向对象程序设计语言有哪些?各有哪些特点?解:Visual C++6.0支持面向对象编程、可视化、模块化、代码可重用和组件共享等技术,可以大大提高软件系统的设计、管理和开发速度。
Java语言是一种通用、并发、基于类的面向对象程序设计语言。
C语言程序设计复习题
《C语言程序设计》(A )卷复习题一、单选题1.下列特性中,C与C++共有的是( D )A.继承B.封装C.多态性D.函数定义不能嵌套2.类的指针成员的初始化是通过函数完成的,这个函数通常是( B )A.析构函数B.构造函数C.其它成员函数D.友元函数3.有关const对象和const成员数据,下列说法不正确的是( C )A.const成员数据不能在定义类时直接赋值B.const对象中的成员数据不能重新赋值C.const对象可以调用它的任何一个成员函数D.const成员数据,只能在构造函数中用初始化列表的方法对它初始化。
4.静态成员函数没有( B )A.返回值B.this指针C.指针参数D.返回类型5.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中( A )A.都是虚函数B.只有被重新说明时才是虚函数C.只有被重新说明为virtual时才是虚函数D.都不是虚函数6.下面叙述不正确的是( D )A.派生类一般都用公有派生B.对基类成员的访问必须是无二义性的C.赋值兼容规则也适用于多重继承的组合D.基类的公有成员在派生类中仍然是公有的7.在C++中实现封装是借助于( B )A.枚举B.类C.数组D.函数8.所有在函数中定义的变量,都是( B )A.全局变量B.局部变量C.静态变量D.寄存器变量二、填空题1.将关键字const写在函数头之后,函数体之前,说明该函数是一个const成员函数。
它的特点是:不能改变_成员数据的值_也不能调用类中_ 非const __成员函数。
2.一个抽象类的派生类可以实例化的必要条件是实现了所有的纯虚函数 __。
3.C++中,虚函数帮助实现了类的_多态_性。
4为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义____ _析构函数_。
5.要把一个函数“void F( );”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:friend void F() 。
VC_复习题+答案
《VC程序设计》试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为()A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为()A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的()A、私有成员B、所有成员C、公用成员D、保护成员4、下面说确的是()A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、下列语句的运行结果为()#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类AB的缺省构造函数和析构函数是()A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,若对函数未加说明,则函数的隐含类型是()A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是( )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是( )A、静态成员函数B、友元函数C、构造函数D、析构函数11、对于消息队列的描述正确的是()A、在Windows中只有一个消息系统,即系统消息队列。
C++程序设计自考题-4_真题-无答案
C++程序设计自考题-4(总分100,考试时间90分钟)一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的。
)1. 下列关于构造函数的描述中,错误的是( )A.构造函数可以设置默认的参数 B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数 D.构造函数不可以重载2. 下列关于this指针的说法,正确的是( )A.this指针一定指向常量型数据 B.this指针指向的数据不可更改C.静态成员函数中也可以访问this指针 D.this指针本身可直接作为成员函数的返回值3. 下列关于复制构造函数的说法中错误的是( )A.复制构造函数是一种特殊的构造函数,函数名与类名相同B.若自定义派生类的复制构造函数,那么也必须自定义基类的复制构造函数C.复制构造函数只能有一个参数D.复制构造函数不允许在函数体中使用refurn语句4. 下列哪种情况不属于函数重载( )A.类中定义的运算符函数B.同一个名字,参数个数不同C.派生类中重新定义了一个和基类中的原型完全相同的函数D.类中定义了两个同名、同参数表的函数,但其中一个是常成员函数5. 下列关于友元的描述中,错误的是( )A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.类与类之间的友元关系可以继承D.友元可以提高程序的运行效率6. 下述静态成员的特性中,错误的是( )A.静态成员函数不能利用this指针B.静态数据成员要在类体外进行初始化C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符D.静态数据成员不是所有对象所共有的7. 下面列出的基类中的哪部分能被派生类自动继承( )A.基类中的默认构造函数 B.基类中的虚析构函数C.基类中的复制构造函数 D.基类中的常成员函数8. 下列有关继承和派生的叙述中,正确的是( )A.派生类不能访问基类的保护成员 B.作为虚基类的类不能被实例化C.派生类应当向基类的构造函数传递参数 D.虚函数必须在派生类中重新实现9. 关于多重继承二义性的描述,错误的是( )A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性 B.—个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C.解决二义性最常用的方法是作用域分辨运算符对成员进行限定D.派生类和它的基类中出现同名函数时,将可能出现二义性10. 当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员,称为继承的( )A.规律性 B.传递性C.重复性 D.多样性11. 下列说法中,不正确的是( )A.模板类的基类可以是非模板类B.模板类的派生类可以是模板类C.根据建立对象时的实际数据类型,编译器把类模板实例化为模板类D.可以从构造函数参数列表推断出模板实例化参数类型12. 下面关于类模板的派生与继承,描述错误的是( )A.类模板可以继承,继承的方法与普通的类一样 B.声明模板继承之前,必须重新声明类模板C.模板类的基类和派生类不可以是非模板类 D.模板类的基类和派生类可以是模板类或非模板类13. 下列关于向量的描述中,不正确的是( )A.向量是类模板,具有成员函数,但它不可以使用构造类型B.向量可以改变赋值目标的大小C.erase(iterator it)方法是删除it所指向的容器对象D.size()方法指返回当前向量中已经存放的对象的个数14. 下列虚基类的声明中正确的是( )A.class virtual B:public A B.virtual class B:public AC.class B:public A virtual D.class B:virtual public A15. 关于虚函数的描述中,正确的是( )A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型16. 关于动态联编的描述中,错误的是( )A.动态联编是以虚函数为基础的B.动态联编运行时确定所调用的函数代码C.动态联编调用函数操作是指向对象的指针或对象引用D.动态联编是在编译时确定操作函数17. 如果一个类至少有一个纯虚函数,那么就称该类为( )A.抽象类 B.虚基类C.派生类 D.以上都不对18. 下列运算符在C++中不能重载的是( )A.?: B.[]C.>> D.&19. 在C++的流类库预定义的缓冲方式下,与标准错误输出设备相联接的是( )A.cin B.coutC.cerr D.clog20. 下列叙述中,错误的是( )A.bad()函数功能表示如果进行非法操作,返回true,否则返回falseB.ios_base::in打开文件用于输入(输入流的打开模式)C.ios_base::ate打开一个已有的输入或输出文件并查找到文件尾D.ios_base::out打开文件进行读操作二、填空题21. 在类定义时,如果没有定义任何构造函数,则编译器自动生成一个______构造函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n=2, sum=2 n=3, sum=5 n=5, sum=10
4. 分析以下程序执行的结果
#include<iostream.h> class Sample { int A; static int B; public: Sample(int a){A=a, B+=a;} static void func(Sample s); }; void Sample::func(Sample s) { cout<<"A="<<s. A<<",B="<<B<<endl; } int Sample::B=0; void main() { Sample s1(2),s2(5); Sample::func(s1); Sample::func(s2); }
x=10, y=20
x=0, y=0 x=1, y=2 x=10, nclude<iostream.h> class Sample { public: int x; int y; void disp() { cout<<"x="<<x<<",y="<<y<<endl; } }; void main() { int Sample::*pc; Sample s,*p=&s; pc=&Sample::x; p->*pc=10; pc=&Sample::y; p->*pc=20; p->disp(); }
3. 分析以下程序执行的结果
#include<iostream.h> class Sample { int n; static int sum; public: Sample(int x) {n=x;} void add() {sum+=n;} void disp() { cout<<"n="<<n<<",sum="<<sum<<endl; } }; int Sample::sum=0; // 静态数据成员赋初值 void main() { Sample a(2),b(3),c(5); a.add(); a.disp(); b.add(); b.disp(); c.add(); c.disp(); }
constructing object: x=1
2. 分析以下程序执行的结果
#include<iostream.h> class Sample { public: Sample(); Sample(int); ~Sample(); void display(); protected: int x; }; Sample::Sample() { x=0; cout<<"constructing normally\n"; } Sample::Sample(int m) { x=m; cout<<"constructing with a number:"<<x<<endl; }
A=2, B=7 A=5, B=7
5. 分析以下程序执行的结果
#include<iostream.h> class Sample { int x,y; public: Sample(){x=y=0;} Sample(int a,int b){x=a;y=b;} void disp() { cout<<"x="<<x<<",y="<<y<<endl; } }; void main() { Sample s1,s2(1,2),s3(10,20); Sample *pa[3]={&s1,&s2,&s3}; for(int i=0;i<3;i++) pa[i]->disp(); }
v=2, t=7
9. 分析以下程序执行的结果
#include<iostream.h> class Sample { public: int x; int y; void disp() { cout<<"x="<<x<<",y="<<y<<endl; } }; void main() { int Sample::*pc; Sample s; pc=&Sample::x; s.*pc=10; pc=&Sample::y; s.*pc=20; s.disp(); }
C++习题(静态成员) 习题(静态成员) 习题
1. 分析以下程序执行的结果
#include<iostream.h> class Sample { int x; public: Sample(int a) { x=a; cout<<"constructing object:x="<<x<<endl; } }; void func(int n) { static Sample obj(n); } void main() { func(1); func(10); }
v=2, t=7
8. 分析以下程序执行的结果
#include<iostream.h> class Sample { int x; int y; public: Sample(int a,int b) { x=a;y=b; } int getx() {return x;} int gety() {return y;} }; void main() { int (Sample::*fp)(); fp=&Sample::getx; Sample s(2,7),*p=&s; int v=(p->*fp)(); fp=&Sample::gety; int t=(p->*fp)(); cout<<"v="<<v<<",t="<<t<<endl; }
void Sample::display() { cout<<"display a number:"<<x<<endl; } Sample::~Sample() { cout<<"destructing\n"; } void main() { Sample obj1; Sample obj2(20); obj1.display(); obj2.display(); } constructing normally constructing with a number:20 display a number: 0 display a number: 20 destructing destructing
x=10, y=20
7. 分析以下程序执行的结果
#include<iostream.h> class Sample { int x; int y; public: Sample(int a,int b) { x=a;y=b; } int getx(){return x;} int gety(){return y;} }; void main() { int (Sample::*fp)(); fp=&Sample::getx; Sample s(2,7); int v=(s.*fp)(); fp=&Sample::gety; int t=(s.*fp)(); cout<<"v="<<v<<",t="<<t<<endl; }