c面向对象程序设计函数模板

c面向对象程序设计函数模板
c面向对象程序设计函数模板

c,,面向对象程序设计函数模板

篇一:《面向对象程序设计C++》习题及详解

1、C++是( C )。

A. 面向对象的程序设计语言

B. 面向过程的程序设计语言

C. 既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言

D. 非结构化的程序设计语言

2、面向对象程序设计思想的主要特征中不包括( D )。

A. 封装性

B. 多态性

C. 继承性

D. 功能分解,逐步求精

3、若定义:string str; 当语句cin>>str; 执行时,从键盘输入:

Microsoft Visual Studio ! 所得的结果是str=( B )。

A. Microsoft Visual Studio !

B. Microsoft

C. Microsoft Visual

D. Microsoft Visual Studio #include #include using namespace std; class Point { private:

string str;

int main() {

Point p;

(); }

4、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');

下面函数调用中,不合法的是(C )。

A. testDefaulParam(5);

B. testDefaulParam(5,8);

C. testDefaulParam(5,'#');

D. testDefaulParam(0,0,'*');

5、下列语句中,将函数int sum(int x, int y)正确重载的是( C )。

A. float sum(int x, int y);

B. int sum(int a, int b);

C. float sum(float x, float y);

D. double sum(int y, int x);

6、下列表示引用的方法中,( A )是正确的。已知:int a=1000;

A. int &x=a;

B. char &y;

C. int &z=1000;

D. float &t=&a;

7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A)。

A. 内联函数

B. 重载函数

C. 递归调用

D. 嵌套调用

8、下列有关C++类的说法中,不正确的是( D )。 A. 类是一种用户自定义的数据类型 return 0;

public: };

Point::Point() { }

cin>>str; Point();

void display(){cout B. 只有类中的成员函数或类的友元函数才能存取类中的私有成员

C. 在类中,如果不做特别说明,所有成员的访问权限均为私有的

D. 在类中,如果不做特别说明,所有成员的访问权限均为公用的

9、已知X类,则当程序执行到语句:X array[3];时,调用了( D )次构造函数。

A. 0

B. 1

C. 2

D. 3

10、下面说法中,正确的是(B )

A. 一个类只能定义一个构造函数,但可以定义多个析构函数

B. 一个类只能定义一个析构函数,但可以定义多个构造函数

C. 构造函数与析构函数同名,只要名字前加了一个求反符号(~)

D. 构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以

11、已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,( A)是正确的。

A. void print( ) const;

B. const void print( );

C. void const print( );

D. void print(const); 12、下面描述中,表达错误的是( B )

A. 公用继承时基类中的public成员在派生类中仍是public的

B. 公用继承时基类中的private成员在派生类中仍是private的

C. 公用继承时基类中的protected成员在派生类中仍是protected的

D. 私有继承时基类中的public成员在派生类中是private的

13、设置虚基类的目的是( B)。

A. 简化程序

B. 消除二义性

C. 提高运行效率

D. 减少目标代码

14、下面( B)的叙述不符合赋值兼容规则。 A. 派生类的对象可以赋值给基类的对象 B. 基类的对象可以赋值给派生类的对象 C. 派生类的对象可以初始化基类的对象

D. 派生类的对象的地址可以赋值给指向基类的指针

15、关于虚函数的描述中,( C)是正确的。 A. 虚函数是一个static类型的成员函数 B. 虚函数是一个非成员函数

C. 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数

D. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型

16、下面关于友元的描述中,错误的是(D )。 A. 友

元函数可以访问该类的私有数据成员

B. 一个类的友元类中的成员函数都是这个类的友元

函数 C. 友元可以提高程序的运行效率 D. 类与类之间的

友元关系可以继承

17、下列关于静态数据成员的说法,不正确的是(C )。

A. 类中定义的公用静态数据成员,可以通过类的对象来访

B. 类中定义的所有静态数据成员,都必须在类外初始

化 C. 静态数据成员不是所有对象所共用的

D. 普通的成员函数可以直接访问类中的静态数据成

员 18、如果表达式++i*k中的“++”和“*”都是重载的友

元运算符,若采用运算符函数调用格式,则表达式还可以表

示为( B )。

A. operator*(++(),k)

B. operator*(operator++(i),k)

C. ++().operator*(k)

D. *(operator++(i)) #include

using namespace std; class Counter { public:

Counter(){value=0;} Counter(int i){value=i;}

friend Counter operator ++(Counter &);

friend Counter operator *(Counter c1,Counter c2); void display(){cout 19、下面对模板的声明,正确的是( C )。

A. template

B. template

C. template

D. template

20、下列的各类函数中,( C)不是类的成员函数

A. 构造函数

B. 析构函数

C. 友元函数

D. 复制构造函数

二、填空题(前14个空,每空1分,后3个空,每空2分,共20分)

1、类和对象的关系可表述为:类是对象的而对象则是类的实例。

2、静态成员函数没有隐含的 this指针,所以,在C++

private: };

Counter operator ++(Counter &p) {}

Counter operator *(Counter c1,Counter c2) { } int main() { }

Counter n(10),c,h; h=n; //c=(++n)*h;

c=(operator *((operator ++(n)),h)); (); return 0; Counter temp;

=*; return temp; ++; return p; unsigned value;

程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员。

3、在图1中,A,B,C,D,E,F均是类,其中属于单继承的派生类有 E ,属于多继承的派生类有 DF,类F的基类有 ABCDE ,类A的派生类有DF。

图1 类的继承层次图

4、如果只想保留公共基类的一个复制,就必须使用关键字把这个公共基类声明为虚基类。

5、从实现的角度来讲,多态性可以划分为两类:静态多态性和动态多态性。

6、如果一个类包含一个或多个纯虚函数,则该类称为抽象类。

7、若要把void fun()定义为类A的友元函数,则应在类A的定义中加入语句 friend void fun(A &a); 。

8、列出C++中的两种代码复用方式:继承和合。

9、析构函数的作用是在对象被系统释放之前做一些

内存清理的工作。

10、假定A是一个类名,则该类的拷贝构造函数的原型说明语句为:A(const A&)

11、后置自增运算符“++”重载为类的成员函数(设类名为A)的形式为: A operator ++(int)

三、阅读下面4个程序,写出程序运行时输出的结果。(共13分) 1、

#include using namespace std; void fun(int &a, int &b) { int p;

p=a; a=b; b=p; }

void exchange(int &a, int &b, int &c) { if( a { int a=12,b=89,c=56;exchange(a, b, c);

cout a=89,b=56,c=12 2、

#include using namespace std; class A { public: A( ) { cout B( ) { cout class C: public A { public:

C( ) { cout int main ( ) {

C obj; return 0; } ABC 3、

#include using namespace std; class A {public: A(){cout virtual ~A(){cout class B: public A {public:

B(int i)

{ cout }

virtual ~B() { delete []buf;

cout char *buf; }; int main()

{A *a=new B(15);

delete a; return 0; }

A::A() called. B::B() called. B::~B() called. A::~A() called. 4、

#include using namespace std; class A {public: void f(){cout }; class B {public: void f() {cout void g() {cout class C: public A, public B {public: void g(){cout }; int main() { C cc;

::f();

::g(); (); return 0;

}

Call B's function f() Call B's function g() Call C's function g() 四、编程题(27分)

1、(10分)已知复数类Complex的声明如下: class Complex {public:

Complex();//无参构造函数Complex(double );//转换构造函数

Complex(double, double);//有两个形参的构造函数

friend Complex operator+(Complex&, Complex&); //对“+”运算符进行重载

friend ostream& operator friend istream& operator>>(istream&, Complex&); //对“>>”运算符进行重载 private:

double real,imag;

篇二:c++面向对象程序设计试题和答案(经典题目)

一、填空题(每空1分,共14分)

1、观看以下程序:

class point{

public:

void show() {cout };

void main()

{

point p1;

point *p;

p=&p1;

______()_________//通过对象p1访问show函数

_______()_______//通过指针p访问show函数

}

2、在C++类中可以包含___公共___、___保护_____和___私有__三种具有不同访问控制

权的成员。

3、定义类时,在类头中将使用关键字__class _____来表示类定义的开始。

4、如果一个类中至少有一个纯虚函数,则该类称为_______抽象类_________。

5、 C++类的组成包括数据成员和______成员函数________,友元__是___(是、不是)

该类的成员函数。

6、友员函数是用关键字_____friend_______修饰的非成员函数。

7、若有:

int i;

int &j=i;

i=10;

j=i+1;

则i=____11_____,j=___11______。

8、 new的功能是_______分配内存空间______,delete 的功能是______释放内

存空间______________。系名____________班级____________姓名____________学号____________ 密封线内不答题

二、选择题(每小题分,共30分)

1、下列特性中不是面向对象程序设计语言所特有的是( D )。

(A)数据封装

(B)继承(C)多态性(D)模板 2、( B )是给变量取一个别名,它引入了变量的同意词。

(A)指针(B)引用(C)枚举(D)结构

(D)protected 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。(A)share (B)public (C)private

(A)构造函数名字和类名相同

(B)构造函数在创建对象时自动执行

(C)构造函数无任何函数返回类型

(D)构造函数有且只有一个

5、派生类可以访问其基类的()。

(A)公有成员

(C)私有派生(B)保护成员(D)公有和保护成员4、关于构造函数,下列说法不正确的是()。

6、下列关于运算符重载的描述中,错误的是()。

(A)运算符重载不可以改变操作数的个数

(B)运算符重载不可以改变运算符的功能

(C)运算符重载不可以改变结合方向

(D)运算符重载不可以改变运算优先级

7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()(A)面向过程(B)面向对象(C)安全性(D)复用性

8、对于类中定义的成员,其隐含访问权限为()。

A.publicB.protected

C.private D.static

9、下面有关重载函数的说法中正确的是()

(A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同;(C)重载函数必须有不同的形参列表(D)重载函数名可以不同;

10、有如下的对类“CSample”的说明,其中()是错误的。

class CSample {

A.int a=23;

B.CSample();

public:

C.CSample(int val);

D.~ CSample();

11、在int a=3,int *p=&a;中,*p的值是( )

A.变量a的地址值

B.无意义

C.变量p的地址值

12、每个类()构造函数。

(A)只能有一个(B)只可有公有的

——第2页——

(C)可以有多个(D)只可有缺省的

13、在一个类中可以对一个操作符进行()重载。

(A)1 种(B)2 种以下(C)3 种以下(D)多种

14、在公有继承的情况下,基类非私有成员在派生类中的访问权限()

(A)受限制(B)保持不变(C)受保护(D)不受保护

15、应在下列程序划线处填入的正确语句是()

#include

_

_class Base

_

_

_{public:

_

_

_void fun(){cout _

_};

号_

学class Derived:public Base

_

_{ void fun()

_

_

_{_____________//显示调用基类的函数fun()

_

_题 cout _

_

_答}

名_不};

_内(A)fun();(B)(); (C)Base::fun(); _

_

_线16、执行下面的程序将输出()

_

_

_封#include

_

_

_class BASE{

_密

_

级 char c;

班 public:

_

_

_ BASE(char n):c(n){}

_

_

_ virtual ~BASE(){cout _ _

_ };

_

_

_class DERIVED:public BASE{ 名

系 char c;

public:

DERIVED(char n):BASE(n+1),c(n){}

~DERIVED(){cout };

int main()

{DERIVED a('X');

D)Base->fun(); (

return 0;

}

(A)XY (B)YX (C)X(D)Y

17、下面描述中,表达错误的是()

(A)公有继承时基类中的public成员在派生类中仍是public的

(B)公有继承是基类中的private成员在派生类中仍是private的

(C)公有继承时基类中的protected成员在派生类中仍是protected的

(D)私有继承时基类中的public成员在派生类中是private的

《面向对象程序设计C 》期末试卷及标准答案

《面向对象程序设计C++》期末考试试卷(B) 一、单项选择题(每小题2分,共40分) 1、关于C++与C语言关系的描述中,()是错误的。 A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的 2、已知:int m=10; 下列表示引用的方法中,()是正确的。 A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。 A.函数的返回值类型B.参数的类型C.函数名称D.参数个数 5、下列有关C++类的说法中,不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中,如果不做特别说明,所有成员的访问权限均为私有的 D.在类中,如果不做特别说明,所有成员的访问权限均为公用的 6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型

c面向对象程序设计试题和答案(经典题目)

一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”<

(A)指针(B)引用(C)枚举(D)结构 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是()。 (A)构造函数名字和类名相同 (B)构造函数在创建对象时自动执行 (C)构造函数无任何函数返回类型 (D)构造函数有且只有一个 5、派生类可以访问其基类的()。 (A)公有成员(B)保护成员 (C)私有派生(D)公有和保护成员 6、下列关于运算符重载的描述中,错误的是()。 (A)运算符重载不可以改变操作数的个数 (B)运算符重载不可以改变运算符的功能 (C)运算符重载不可以改变结合方向 (D)运算符重载不可以改变运算优先级 7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是() (A)面向过程(B)面向对象(C)安全性(D)复用性 8、对于类中定义的成员,其隐含访问权限为()。 A.public B.protected C.private D.static 9、下面有关重载函数的说法中正确的是() (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表(D)重载函数名可以不同; 10、有如下的对类“CSample”的说明,其中()是错误的。 class CSample { A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); 11、在int a=3,int *p=&a;中,*p的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 12、每个类()构造函数。 (A)只能有一个(B)只可有公有的

面向对象程序设计 复习资料

1.对象 (1)从概念层面讲,对象是某种拥有责任的抽象。 (2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。 (3)从语言实现层面讲,对象封装了代码和数据。 2.软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。 3.设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、 迪M特原则、接口隔离原则、单一职责原则。 4.面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限 编程)。 开发方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock 5.OOA——运用面向对象方法进行需求分析。 OOD——运用面向对象方法进行系统设计。 OOP——运用面向对象方法进行程序设计。 6.OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。 优点:(1)加强了对问题域和系统责任的理解。(2)改进与分析有关的各类人员之间的交流。(3)对需求的变化具有较强的适应性。(4)支持软件复用。 OOA的三大策略是:属性策略、方法策略、对象策略。 7.(1)封装:是指对象在其操作中隐藏属性。它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。 例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里 面是否有足够的钱。而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。 以表示圆的一个对象作为封装的例子。圆的操作应能计算出半径、直径、周长和面积。假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。如果在软件的后续版本中要存储的是半径,就必须找出系统中直接访问直径的所有代码,并更正它们,有了封装,就不会有问题。 (2)继承:可以指定类从父类中获取一些特性,再添加它自己的独特特性。继承是类间的 基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承父类的属性和操作,也可以对父类中的操作重新定义其实现方法。 例如:在面向对象中,我们可以把洗衣机、电冰箱、微波炉、收音机看成是家用电气类的 子类,也可以说家用电器类是这些类的超类。家用电器类具有的属性OnOffSwitch和electricWire,具有turnOn()和turnOff()操作。因此,如果你知道某物是家用电器,那么就会立即知道它 具有家用电器类的属性和操作,这种关系就是继承。每个家用电器类的子类都继承了家用电器类的特征。同时,每个子类都增加了自己的属性和操作。 (3)多态:是指同一操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如:“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形;作用在“圆”对象上, 则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同对象时,每个对象将根据自1 / 9

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

C++函数模板详解

C++函数模板详解 经常有碰到函数模块的应用,很多书上也只是略有小讲一下,今天又狂碰到函数模块,无奈特地找来C++编程经典<>翻阅一遍,终于有所全面了解..... C++函数模块基础知识: 一. 问题: 强类型语言要求我们为所有希望比较的类型都实现一个实例 int min( int a, int b ) { return a < b ? a : b; } double min( double a, double b ) { return a < b ? a : b; } 有一种方法可替代为每个min()实例都显式定义一个函数的方法这种方法很有吸引力但是也很危险.那就是用预处理器的宏扩展设施例如 :#define min(a,b) ((a) < (b) ? (a) : (b)) 在复杂调用的情况下,它的行为是不可预期的,这是因为它的两个参数值都被计算两次.一次是在a 和b 的测试中另一次是在宏的返回值被计算期间. #include #define min(a,b) ((a) < (b) ? (a) : (b)) const int size = 10; int ia[size]; int main() { int elem_cnt = 0; int *p = &ia[0]; // 计数数组元素的个数 while ( min(p++,&ia[size]) != &ia[size] ) ++elem_cnt; cout << "elem_cnt : " << elem_cnt << "\texpecting: " << size << endl; return 0; } 执行该程序的结果是下面不正确的计算结果: elem_cnt : 5 expecting: 10

面向对象程序设计期末综合练习一(单选题)

22. 下列的符号常量定义中,错误的定义是()。 A. const M=10; B. const int M=20; C. const char ch; D. const bool mark=true; 40. 函数重载是指()。 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同 41. 以下关于函数模板叙述正确的是()。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型 42. 下列()的调用方式是引用调用。 A. 形参和实参都是变量 B.形参是指针,实参是地址值 C. 形参是引用,实参是变量 D.形参是变量,实参是地址值

43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。 A. 内联函数 B.重载函数 C.递归函数 D.函数模板 44. 函数原型语句正确的是()。 A. int Function(void a); B.void Function (int); C. int Function(a); D.void int(double a); 45. C++中函数返回值的类型是由()决定的。 A. return语句中表达式的类型 B.该函数定义时的类型 C.调用函数时的调用语句 D.系统根据结果 56. 采用重载函数的目的是()。 A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性 58. 以下叙述中正确的是( )。 A. 使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值 B. 使用const定义的常量,其值在程序运行时是不可改变的 C. 在程序中使用内联函数使程序的可读性变差 D. 在定义函数时可以在形参表的任何位置给出缺省形参值 70. 用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。 A. int *p=new a[10]; B. int *p=new float[10];

面向对象程序设计C自学考试课程复习题

(07837)《面向对象程序设计C++》复习题 一、单选题 1.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( D ) A. 公有类型 B. 私有类型 C. 保护类型 D. 友元类型 2.下列关于多态性的描述,错误的是( C ) A. C++语言的多态性分为编译时的多态性和运行时的多态性 B. 编译时的多态性可通过函数重载实现 C. 运行时的多态性可通过模板和虚函数实现 D. 实现运行时多态性的机制称为动态绑定 3.在C++语言中,数据封装要解决的问题是( D ) A. 数据的规范化 B. 便于数据转换 C. 避免数据丢失 D. 防止不同模块之间数据的非法访问 4.使用private修饰的成员变量,以下说法正确的是( A ) A. 只能由本类中的函数使用,不能被外面的程序所访问。 B. 可以由本类中的函数使用,也可以被外面的程序所访问。 C. 只能由本类和派生类中的函数使用。 D. 可以在主函数中使用。 5.对类的构造函数和析构函数描述正确的是( A ) A. 构造函数可以重载,析构函数不能重载 B. 构造函数不能重载,析构函数可以重载 C. 构造函数可以重载,析构函数也可以重载 D. 构造函数不能重载,析构函数也不能重载 6.下面对静态数据成员的描述中,正确的是( A ) A. 静态数据成员是类的所有对象共享的数据 B. 类的每个对象都有自己的静态数据成员 C. 类的不同对象有不同的静态数据成员值 D. 静态数据成员不能通过类的对象调用 7.在VC++语言类体系中,不能被派生类继承的有( B ) A. 转换函数 B. 构造函数 C. 虚函数 D. 静态成员函数 8.下面关于句柄正确的说法是( A ) A. 句柄是一个标识Windows资源和设备等对象的变量。 B. 句柄是用户程序自定义的数据类型。 C. 用户程序使用句柄时不需要定义。 D. 句柄仅仅是一个抽象的概念,程序中不能使用句柄。 9.下面关于动态链接库正确的说法是( B ) A. 动态链接库提供的函数,在编译阶段能够连接到应用程序中。 B. 动态链接库提供的函数,在运行阶段能够连接到应用程序中。 C. 动态链接库本身不能单独设计、编译和调试。 D. 动态链接库的使用使得程序缺乏灵活性。 10.下面关于MFC应用程序中InitInstance函数正确的说法是( D ) A. 该函数由用户定义。

《C面向对象程序设计》谭浩强版复习总结

第一章C++ 基础 endl 换行并刷新输出流 setw(n) 设置字段位数为n hex,oct,dec 十六进制,八进制,十进制表示 setfill 定义填充字符 setprecision 定义浮点数的精度 left,right 左对齐,右对齐 showpoint 强制显示小数点以及全部尾部0 C++通过给常量命名的方式定义常量: const<数据类型名><常量名>=<表达式> 用const定义的标识符常量时,一定要对其初始化。在说明时进行初始化是对这种常量置值的唯一方法,不能用赋值运算符对这种常量进行赋值。 函数声明的一般形式为 函数类型函数名(参数表) 函数模板的定义 template 函数定义 例子:template T max(T a,T b){ return(a>b)? a:b; } 定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class,用逗号分隔: template

例子:template T1 max(T1 a,T2 b){ return (a>b) ? a : (T1)b; } 有默认参数的函数:实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端 引用 定义对变量起另外一个名字(别名alias),这个名字称为该变量的引用。 <类型> &<引用变量名> = <原变量名>; 其中原变量名必须是一个已定义过的变量。如: int max ; int &refmax=max; refmax并没有重新在内存中开辟单元,只是引用max的单元。max与refmax在内存中占用同一地址,即同一地址两个名字。 对引用类型的变量,说明以下几点: 1、引用在定义的时候要初始化 2、对引用的操作就是对被引用的变量的操作。 3、引用类型变量的初始化值不能是一个常数。 4、一旦引用被声明,它就不能再指向其它的变量。 5、对引用的初始化,可以用一个变量名,也可以用另一个引用。 6、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。 当&m的前面有类型符时(如int &m),它必然是对引用的声明;如果前面无类型符(如cout<<&m),则是取变量的地址。 7、对常量(用const声明)的引用使用如下方式: int i=5; const int &a=i;

c+面向对象程序设计试题和答案题目

系名___ ___ ___ ___ 班级___ ___ ___ ___姓名___ ___ ___ ___学号___ ___ ___ ___ 密 封 线 内 不 答 题 一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”<

C面向对象程序设计教程第版陈维兴林小茶课后习题答案及解析

C++面向对象程序设计教程课后题答案 1.1 什么是面向对象程序设计? 面向对象程序设计是一种新的程序设计范型.这种范型的主要特征是: 程序=对象+消息 面向对象程序的基本元素是对象。 主要结构特点是: 第一,程序一般由类的定义和类的使用两部分组成; 第二,程序中的一切操作都是通过向对象发送消息来实现的。 1.2 什么是对象?什么是类?对象与类之间的关系是什么? 对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。 类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。 类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。 1.3 现实世界中的对象有哪些特征?请举例说明。 现实世界中的对象具有以下特征: 1) 每一个对象必须有一个名字以区别于其他对象; 2) 用属性来描述对象的某些特征; 3) 有一组操作,每组操作决定对象的一种行为;

4) 对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其他对象的行为。 例如一个教师是一个对象。每个教师对象有自己的名字来和别的教师区别。教师具有编号,姓名,年龄,职称,专业等属性。教师拥有走路,吃饭,授课等行为操作。走路,吃饭是作用于自身的行为,授课是作用于其他对象的行为。 1.4 什么是消息?消息具有什么性质? 一个对象向另一个对象发出的请求成为“消息”。 消息具有以下3个性质: 1) 同一个对象可以接收不同形式的多个消息,做出不同的相应; 2) 相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的; 3) 对消息的响应并不是必须的,对象可以响应消息,也可以不响应。 1.5 什么是抽象和封装?请举例说明。 抽象是将有关事物的共性归纳、集中的过程。 例如:把所有具有大学生学籍的人归为一类,成为“大学生”,这就是一个抽象。 封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐藏对象的内部细节。 例如:每一台洗衣机都有出厂日期、机器编号等属性,也有启动、暂停、选择等操作。人们在使用洗衣机的时候只需要按下对应的按钮,而不用关心具体的内部实现。这就是封装。 1.6 什么是继承?请举例说明。 继承就是允许派生类使用基类的数据和操作,同时,派生类还可以增加新的操作和数据。

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

第 6 章(1)━━函数模板、类模板

C++程序设计 第6章(1) ━━函数模板、类模板

主要内容 ●关于模板 ●函数模板的定义 ●函数模板实例化 ●关于类模板 ●类模板的定义 ●类模板实例化 ●顺序表类模板的定义

关于模板 关于模版: ①为提高程序的通用性,必须使其代码不受数据类型的限制,即建立与数据类型无关 的通用函数或通用类,方法是将其中的数据类型参数化,在函数或类的定义中引入数据类型参数。 ②模板是函数或类的通用样板,当函数或类需要处理多种不同类型数据时,可通过模 板来创建具有通用功能的函数或类,即函数模板或类模板,以达到通用的目的。③由于一个函数模板可以支持多个具有不同数据类型形参的函数,从而简化了重载函 数的设计。 ④C++国际标准ISO 14882 将模板正式引入标准库,以模板类取代传统的C++类。 ⑤程序中的软件模块由模板构造,即函数模板实例化产生相应的模板函数,类模板实 例化产生相应的模板类,这种程序设计类型称为参数化程序设计。

函数模板的定义 函数模板的定义: template <模板形参列表> 返回值类型函数名(函数形参列表){ 函数体} ①模板形参有两种:类型参数、常规参数 ②类型参数:由typename或class后加一个标 识符构成,该标识符用在紧跟其后的函数中代表一种潜在的数据类型。 ③常规参数:由类型符( 如int、float ) 后加一个标识符构成,该标识符用在紧跟其后的函数中代表一个潜在的常量。 ④模板形参格式:typename 形参名 class 形参名 数据类型形参名①函数的返回值类型、形参类型以及函数体中, 均可使用前面模板形参表中给出的类型参数来代表某种潜在的数据类型,该类型参数代表的具体类型只有在调用函数时根据给出的模板实参才能确定! ②在函数体中,还可使用前面模板形参表中给 出的常规参数来代表一个潜在的常量,该常规参数代表的具体值只有在调用函数时根据给出的模板实参才能确定!因此其对应的模板实参必须是常量表达式。

《面向对象程序设计C 》期末考试试卷

《面向对象程序设计C++》期末考试试卷 一、选择题(每小题3分,共48分。) 01、下列关于C++函数的叙述中,正确的是( C )。 A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值 C)函数在被调用之前必须先声明 D)函数不能自己调用自己 02、下列关于类和对象的叙述中,错误的是( A )。 A)一个类只能有一个对象 B)对象是类的具体实例 C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系 03、在C++中,用于实现运行时多态性的是( D )。 A)内联函数 B)重载函数 C)模板函数D)虚函数 04、下列关于运算符重载的叙述中,正确的是( B )。 A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载 C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参 05、对于语句 cout<

C面向对象程序设计课程设计报告

《C++面向对象程序设计》课程设计报告题目:分数计算器设置 班级: K0312415 专业:计算机科学与技术 学号: 姓名:周林 指导教师: 小组成员:周林,张齐满 二O一三年 10 月 15 日

一、课程设计问题描述 分数计算器设计是高等学校教务管理的重要组成部分,其内容较多,为了简化计论, 要求设计的管理系统能够完成以下功能: (1)定义整数类和分数类。其中,包括构造函数、析构函数、显示函数等。 (2)输入/输出:对流提取和流插入运算符进行重载。 (3)计算功能:可进行分数的加、减、乘和除法运算。 (4)化简功能:将分数化简为最简分数。 (5)异常处理功能:分数中分母不能为零。 (6)菜单功能:每种功能的操作都是在菜单中进行相应选择。 二、课程设计目的和要求: 经过一个学期的《C++面向对象程序设计》课程的学习,已经有了一定地程序设计基础,但是要学好C++面向对象程序设计这门课程,不仅要认真阅读课本知识和从事课堂学习,更重要的是要进行上机实践,通过上机实践才能增强和巩固知识。 三、系统设计(算法分析) 1、系统由5功能,可分别执分数的.加法运算,减法运算,.乘法运算和除法运算,还可以将分数化简。 1.加法运算可计算两个分数相加。 2.减法运算可计算两个分数相减。 3.乘法运算可计算两个分数相乘。 4.除法运算可计算两个分数相除。 5.化简运算可计算一个分数化简。 2、流程图

3、分数计算器设置各函数的功能和实现的相关功能由对应的函数来实现。 (1)函数jia() (2)函数jian() (3)函数cheng()实现分数乘法运算。 (4)函数chu()实现分数除法运算。 (5)函数shuchu()实现分数的输出和化简。 四、程序源代码 pp : Defines the entry point for the console application.

面向对象程序设计基本概念

面向对象程序设计基本概念 面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。 消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

泛微E-COLOGY显示模板函数公式整理

显示模板函数公式整理【初稿】 注意 请先详细阅读《流程表单设计器使用手册》一、数学函数

2、使用实例 1) ABS A1=ABS(B1*B2),B1=-10,B2=3,则A1=30 2) AVERAGE A1=AVERAGE(B1:B5),B1=5,B2=5,B3=-5,B4=5,B5=5,则A1=3 3)COS COS(数值),数值为弧度 4)EXP A1=EXP(4),则A1=54.59815 5)INT A1=(B1+B2),B1=10.64,B2=20.55,则A1=31 6)LN A1=LN(10),则A1=2.302585 7)LOG10 A1=LOG10(100),则A1=2 8) MAX A1=MAX(B000:E000),B2=15,C2=23,D2=12,E2=37,则A1=37 9)MIN A1=MIN(B000:B4),B2=12,B3=5,B4,则A1=5 10)MOD A1=MOD((MAX(B000:B5)+AVERAGE(C1:C5)),MIN(D1:D5)),B2=15,B3=25 B4=30,C1=20,C2=20,C3=30,C4=10,C5=40,D1=20,D2=15,D3=10,D4=30,D5=20,则A1=4 11)PI A1=PI(),则A1=3.14 12)ROUND A1=ROUND(15.228542,3),则A1=15.229 13)SIN SIN(数值),数值为弧度 14)SQRT A1=SQRT(100),则A1=10 15)SUM A5=SUM(B00:B0),B4=2,B3=4,B2=6,B1=数量,则A5=12 16) SUM_USERVAL 对单元区域中用户自定义数值相同的单元进行求和 17) SUM_USERVAL_DOWN 从上到下对单元区域中的单元用户自定义数值相同的单元进行求和,用户自定义数值不相同后不再计算 18) SUM_USERVAL_UP 从下到上对单元区域中的单元用户自定义数值相同的单元进行求和,用户自定义数值不相同后不再计算

C面向对象程序设计知识点汇集

C#面向对象程序设计知识点汇集 第一章:C#入门 1.namespace关键字 namespace即命名空间,是定义命名空间的关键字,命名空间包含类,是类的组织方式。namespace 命名空间名 { …//类的定义 } 2.using关键字 using关键字用于导入命名空间 using命名空间名; 3.class关键字 class即类,是定义类的关键字。C#中必须用类来组织程序的变量和方法。 4.Main()方法 C#程序必须且只能包含一个Main()方法,它是程序的入口点。 static void Main(string[] args){} static void Main(){} static int Main(string[] args){} static int Main(){} 5.行输出方法 语句“Console.WriteLine("Hello .NET!");”的功能是向显示屏输出双引号之间的字符串。语句“Console.ReadLine();”的功能是输入一个字符串 6.C#程序结构 C#程序的组成要素如下: 1) 命名空间:命名空间包含一个或多个类。 2) 类。 3) 方法:方法必须包含在某一个类中,作为类的一个成员,每个程序有且仅有一个Main()方法。 4) 语句:语句是C#应用程序中执行操作的命令。C#中的语句必须用分号“;”结束。 5) 关键字:关键字也叫保留字,是对C#有特定意义的字符串。 6) 大括号:在C#中,括号“{”和“}”是一种范围标志,表示代码层次的一种方式。7.C#程序书写格式 1)缩进 2) 字母大小写 C#是大小写敏感的语言,它把同一字母的大小写当作两个不同的字符对待。 3) 程序注释 (1) 单行注释,以双斜线“//”开始,一直到本行尾部,均为注释内容。 (2) 多行注释,以“/*”开始,以“*/”结束,可以注释多行,也可以注释一行代码中间的一部分,比较灵活。 (3) 文档注释,使用“///”,若有多行文档注释,每一行都用“///”开头。 8.Console类 Console类是System命名空间中预定义的一个类,用于实现控制台的基本输入输出。

面向对象程序设计实验

实验一C++ 基础 1.1 实验目的 1.了解并熟悉开发环境,学会调试程序; 2.熟悉 C++ 中简单的标准输入输出函数的使用方法; 3.理解 const 修饰符的作用并学会应用; 4.理解内联函数的优缺点并学会其使用场合; 5.理解并学会函数重载; 6.理解并熟练掌握使用 new 和 delete 来分配内存; 7.理解并熟练掌握引用的使用方法。 1.2 实验内容 1.2.1 程序阅读 1.理解下面的程序并运行,然后回答问题。 #include int max_def(int x, int y) { return (x>y?x:y); } int max_def(int x, int y, int z) { int temp = 0; return (temp=(x>y?x:y))>z?temp:z; } double max_def(double x, double y) { return (x>y?x:y); } int main()

int x1 = 0; int x2 = 0; double di = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 = max_def(2,3,4); di = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8); -------------------------------- cout

相关主题
相关文档
最新文档