c类和对象练习题
- 格式:docx
- 大小:80.72 KB
- 文档页数:16
北航1212考试批次《C++程序设计》复习题一一、客观题单项选择题(本大题共20小题,每小题1.5分,共30分)1、在面向对象的程序设计中,一切都是围绕着___展开的(B)。
A.语言 B.类 C.数据类型 D.结构2、以下关于类和对象的叙述中,正确的是( D)。
A.类和对象间没有联系 B.一个类的成员函数可以任意被调用C.对象是抽象的,而类是具体实现D.一般只有通过具体的对象才能访问类的成员函数3、关于C++语言和C语言的关系的下列描述中,错误的是( D)。
A.C语言是C++语言的一个子集 B.C++语言对C语言做了些改进C.C++语言与C语言兼容 D.C语言和C++语言都是面向对象的语言4、下列函数中,可以为虚函数的是( D )。
A.自定义的构造函数 B.拷贝构造函数 C.静态成员函数D.析构函数5、在一个被调用函数中,关于return语句使用的描述,错误的是( C )。
A.被调用函数中可以不用return语句; B.被调用函数中可以使用多个return语句;C.被调用函数中,一个return语句可以返回多个值给调用函数;D.被调用函数中,如果有返回值,就一定要有return语句;6、若用数组名作为函数调用时的实参,则实际上传递给形参的是(A)A、数组首地址B、数组的第一个元素值C、数组中全部元素的值D、数组元素的个数7、在以下关于C++语言的注释的叙述中,不正确的是(C )A、C++程序中,注释可用“/*”、“*/”形式表示,也可用“//”形式表示B、C++编译器在编译一个程序时,将跳过注释,不对其进行处理C、C++编译器在编译一个程序时,可发现注释中的单词拼写错误D、程序中注释的多少不会影响所生成的可执行文件的长度8、下列关于C++函数的叙述中,正确的是(C)A、每个函数至少要具有一个参数B、每个函数都必须返回一个值C、函数在被调用之前必须先声明D、函数不能自己调用自己9、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:(B)。
一、选择题1.C++语言属于( C )。
A)自然语言 B)机器语言 C)面向对象语言D)汇编语言2.下面选项中不属于面向对象程序设计特征的是(C) 。
A)继承性 B)多态性 C)相似性 D)封装性3.可用作C++语言用户标识符的一组标识符是( B )。
A) void define +WORD B) a3_b3 _123 YNC) for -abc Case D) 2a DO sizeof4.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。
A) 0 B) 4 C) 8 D) 65.下列情况中,哪一种情况不会调用拷贝构造函数( B )?A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用者时6.以下哪一关键字可用于重载函数的区分(C)A)extern B)static C)const D)virtual7.下列有关数组的叙述中,正确的是( B )A)C++中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名 *数组名[下标表达式];8.下列有关继承和派生的叙述中,正确的是( C )A)派生类不能访问通过私有继承的基类的保护成员B)多继承的虚基类不能够实例化C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现9.实现运行时多态的机制是( A )A)虚函数B)重载函数C)静态函数D)模版函数10.若有下面的函数调用:fun(a+b, 3, max(n-1, b));其中实参的个数是( A)A)3 B)4 C)5 D)611.下列关于this指针的说法正确的是( B)A)this指针存在于每个函数之中B)在类的非静态函数中this指针指向调用该函数的对象C)this指针是指向虚函数表的指针D)this指针是指向类的函数成员的指针12.在下列关于C++函数的叙述中,正确的是(C)A)每个函数至少要有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己13.下列运算符中,不能重载的是(C)A)&& B)!= C). D)->14.下面程序的输出结果是(B)#include <iostream>using namespace std;int i = 0;int fun(int n){static int a = 2;a++;return a+n;}void main(){int k = 5;{int i = 2;k += fun(i);}k += fun(i);cout << k;}A)13 B)14 C)15 D)1615.下面的程序段的运行结果为(D)char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’16.下面程序的输出结果是( C )#include <iostream>using namespace std;class A{public:A (int i) { x = i; }void dispa () { cout << x << “,”; }private :int x ;};class B : public A{public:B(int i) : A(i+10) { x = i; }void dispb() { dispa(); cout << x << endl; }private :int x ;};void main(){B b(2);b.dispb();}A)10,2 B)12,10 C)12,2 D)2,217.下面程序的输出结果是( C)?#include <iostream>using namespace std;class Base{public:Base(int i) { cout << i; }~Base () { }};class Base1: virtual public Base{public:Base1(int i, int j=0) : Base(j) { cout << i; }~Base1() {}};class Base2: virtual public Base{public:Base2(int i, int j=0) : Base(j) { cout << i; }~Base2() {}};class Derived : public Base2, public Base1{public:Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c), Base2(d), Base(a){ cout << b; }private:Base2 mem2;Base1 mem1;};void main() { Derived objD (1, 2, 3, 4); }A)134122 B)123412 C)14302012 D)14321218.下面程序的输出结果是(C)#include <iostream>using namespace std;class Base{public:virtual void f() { cout << “f0+”; }void g() { cout << “g0+”; }};class Derived : public Base{public:void f() { cout << “f+”; }void g() { cout << “g+”; }};void main() { Derived d; Base *p = &d; p->f();p->g(); }A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+19.下面程序的输出结果是( C )#include <iostream>using namespace std;class Sample{friend long fun (Sample s){if (s.x < 2) return 1;return s.x * fun(Sample(s.x-1));}public:Sample (long a) { x = a; }private:long x;};void main(){int sum = 0;for (int i=0; i<4; i++){sum += fun(Sample(i));}cout << sum;}A)12 B)16 C)10 D)34 20.以下程序的输出结果是:(D)#include <iostream>using namespace std;int fun(char *s){ char *p=s;while (*p!='\0') p++;return (p-s);}void main(){cout<<fun("abc")<<endl;}A.0 B. 1 C. 2 D. 321.有如下程序段:int i=1;while(1){i++;if (i==10) break;if(i%2==0) cout<<’*’;}执行这个程序段输出字符*的个数是(C)A. 10B. 3C. 4D.522.下列关于虚基类的描述中,错误的是(C)A. 使用虚基类可以消除由多继承产生的二义性B. 构造派生类对象时,虚基类的构造函数只被调用一次C. 声明 class B:virtual public A 说明类B为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数23.有下类定义Class A {Char *a;Public:A():a(0){}A(char *aa) {//把aa所指字符串拷贝到a所指向的存储空间A=___________________;Strcpy(a,aa);~A() {delete [] a;}};正确的选择是(A)A. new char[strlen(aa)+1]B. char[strlen(aa)+1]C. char[strlen(aa)]D. newchar[sizeof(aa)-1]24.假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(d )。
练习题11.1 判断题×1.C++语言和C语言都是面向对象的程序设计语言。
√2.面向对象方法具有封装性、继承性和多态性。
√3.C语言是C++语言的一个子集。
C++语言继承了C语言。
×4.C++语言程序与C语言程序一样都是函数串。
×5.C++语言支持封装性和继承性,不支持多态性。
√6.C++语言比C语言对数据类型要求更加严格了。
√7.C++语言对C语言进行了一次改进,使得编程更加方便了。
×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。
√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。
√10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。
1.2 单选题1.下列关于面向对象概念的描述中,错误的是(C )。
A.面向对象方法比面向过程方法更加先进B.面向对象方法中使用了一些面向过程方法中没有的概念C.面向对象方法替代了结构化程序设计方法D.面向对象程序设计方法要使用面向对象的程序设计语言2.下列各种高级语言中,不是面向对象的程序设计语言是(D )。
A.C++ B.JavaC.VB D.C3.下列关于类的描述中,错误的是( A )。
A.类就是C语言中的结构类型B.类是创建对象的模板C.类是抽象数据类型的实现D.类是具有共同行为的若干对象的统一描述体4.下列关于对象的描述中,错误的是(C )。
A.对象是类的一个实例B.对象是属性和行为的封装体C.对象就是C语言中的结构变量D.对象是现实世界中客观存在的某种实体5.下列关于C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是(C )。
A.提取符是对右移运算符(>>)重载得到的B.插入符是对左移运算符(<<)重载得到的C.提取符和插入符都是双目运算符,它们要求有两个操作数D.提取符和插入符在输入/输出语句中不可以连用1.3 填空题1.C++语言具有面向对象方法中要求的三大特性:封装性、继承性和多态性。
精心整理第8章类与对象8.1知识要点1.掌握类与对象的概念和定义方法,掌握类成员的访问属性。
2.掌握构造函数的概念、定义方法和使用方法。
分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。
例题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(参数)答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、}; }C. class P{ D. class P{intf; public:?}; int a;?f=25; void Seta (int x) {a=x;}答案:D分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。
例题5:拷贝构造函数具有的下列特点中,()是错误的。
A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的答案:B分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。
例题7:关于友元的描述中,()是错误的。
A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员所以共调用了三次构造函数;每释放一个对象,系统自动调用一次析构函数,A、B、C对象释放时,分别调用析构函数,所以析构函数共调用了三次。
例题9:设A为test类的对象且赋有初值,则语句test B(A); 表示。
答案:将对象A复制给对象B。
分析:执行test B(A);语句相当于调用了默认复制构造函数,将A对象的属性复制给B对象。
C语言练习题(带详解答案)一单项选择题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数D)包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)A)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。
C)C程序的三种基本结构是顺序、选择、循环D)C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.intt5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的-,选项B中[与]不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3a某B)某C)caeD)-e2E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的-不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%某B)a+bC)a123D)123选项A中的%,选项B中+不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print_3ddb8aBcB、I\\amone_halftart$it3paiC、tr_1CpppowwhileD、P某qMy->bookline#Hi.age选项B中的\\,$,选项D中>,#,.,-不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
类和对象一、选择题1、下面对方法的作用描述不正确的是:( d )A、使程序结构清晰B、功能复用C、代码简洁D、重复代码2、方法内定义的变量:( b )A 、一定在方法内所有位置可见B、可能在方法内的局部位置可见C、在方法外可以使用D、在方法外可见3、方法的形参:(a)A、可以没有B、至少有一个C、必须定义多个形参D、只能是简单变量4、方法的调用:(c)A、必须是一条完整的语句B、只能是一个表达式C、可能是语句,也可能是表达式D、必须提供实际参数5、return 语句:( d)A、不能用来返回对象B、只可以返回数值C、方法都必须含有D、一个方法中可以有多个return 语句6、void 的含义:(d)A、方法体为空B、方法体没有意义C、定义方法时必须使用D、方法没有返回值7、main()方法的返回类型是:( c )A 、boolean B、int C、void D、static8、方法重载所涉及的方法:( a )A、有相同的名字B、参数个数必须不同C、参数类型必须不同D、返回类型必须不同9、下面关于类和对象之间关系的描述,正确的是( c )A、联接关系B、包含关系C、具体与抽象的关系D、类是对象的具体化10、下面关于java中类的说法哪个是不正确的( c )A、类体中只能有变量定义和成员方法的定义,不能有其他语句。
B、构造方法是类中的特殊方法。
C、类一定要声明为public的,才可以执行。
D、一个java文件中可以有多个class定义。
11、下列哪个类声明是正确的( d)A、public void H1{…} B 、public class Move(){…}C、public class void number{}D、public class Car{…}12、下面的方法声明中,哪个是正确的(c)A、public class methodName(){}B、public void int methodName(){}C、public void methodName(){}D、public void methodName{}13、下述哪些说法是不正确的?( b )A、实例变量是类的成员变量B、实例变量是用static关键字声明的C、方法变量在方法执行时创建D、方法变量在使用之前必须初始化14、下面对构造方法的描述不正确是( b)。
第二章C++基础知识练习题1.请先阅读下面的2个程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。
程序1:#include <iostream> //包含头文件命令using namespace std; //使用名字空间stdint main(){cout<<"This "<<"is ";cout<<"a "<<"C++ ";cout<< "program."<<endl;return 0;}程序2:#include <iostream> //包含头文件命令using namespace std; //使用名字空间stdint main(){ int a,b,c;//定义三个变量a、b、ccout<<"Please input to a and b:"<<endl; //输出提示信息到屏幕cin>>a>>b; //等待用户从键盘输入数据c=a+b;cout<< "a+b=" ;cout<<c;cout<<endl;return 0;}2.输入以下程序,进行编译,观察编译结果,如果有错误,请修改程序,再进行编译,直到没有错误,然后进行连接和运行,并分析运行结果。
#include <iostream> //包含头文件命令using namespace std; //使用名字空间stdint main(){ int a,b;//定义两个变量a和bcout<<"Please input to a and b: "<<endl;//输出提示信息到屏幕cin>>a>>b; //等待用户从键盘输入数据cout<< "Max="<< max(a,b)<<endl; //输出结果信息至屏幕return 0; //主函数返回0至操作系统}int max(int x, int y) { return (x> y) ?x:y; } //求两个数中的大者的函数3.编写一个函数,用来求2个或3个正整数中的最大数,并在主函数中调用此函数。
python面向对象练习题(打印版)# Python面向对象编程练习题面向对象编程(OOP)是Python中的核心概念之一。
通过以下练习题,你可以加深对Python中类和对象的理解。
## 练习一:定义一个类1. 定义一个名为`Person`的类,包含以下属性:- `name`:姓名- `age`:年龄2. 为`Person`类添加一个初始化方法`__init__`,用于设置姓名和年龄。
3. 添加一个方法`greet`,用于打印问候语。
```pythonclass Person:def __init__(self, name, age): = nameself.age = agedef greet(self):print(f"Hello, my name is {} and I am{self.age} years old.")```## 练习二:继承和多态1. 定义一个`Student`类,继承自`Person`类。
2. 添加一个属性`student_id`来表示学生的学号。
3. 重写`greet`方法,使其打印出学生特有的问候语。
```pythonclass Student(Person):def __init__(self, name, age, student_id):super().__init__(name, age)self.student_id = student_iddef greet(self):print(f"Hello, I am {}, a student of age {self.age} with ID {self.student_id}.")```## 练习三:封装1. 创建一个名为`Car`的类。
2. 包含属性:`make`(制造商),`model`(型号),`year`(年份)。
3. 为这些属性提供私有化处理,即在属性名前加上双下划线`__`。
c类和对象练习题Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#第8章类与对象8.1知识要点1.掌握类与对象的概念和定义方法,掌握类成员的访问属性。
2.掌握构造函数的概念、定义方法和使用方法。
3.掌握析构函数的概念、定义方法和使用方法。
4.掌握拷贝构造函数的概念、定义方法和使用方法。
5.掌握包含对象成员的类构造函数的定义方法。
6.掌握静态成员的概念、定义方法、作用和特点。
7.掌握友元的概念、定义方法、作用和特点。
8.掌握类模板的定义格式与使用方法。
8.2典型例题分析与解答例题1:下列有关类的说法不正确的是()。
A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似答案:C分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。
例题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(参数)答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。
例题3:()的功能是对象进行初始化。
A.析构函数B. 数据成员 C.构造函数 D.静态成员函数答案:C分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作;例题4:下列表达方式正确的是()。
A.class P{B.class P{public: public:int x=15; int x;voidshow(){cout<<x;} void show(){cout<<x;}}; }C. class P{ D. class P{intf; public:}; int a;f=25; void Seta (int x) {a=x;}答案:D分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。
例题5:拷贝构造函数具有的下列特点中,()是错误的。
A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的B.拷贝构造函数只有一个参数,并且是该类对象的引用C.拷贝构造函数是一种成员函数D.拷贝构造函数的名字不能用类名答案:D分析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。
例题6:关于静态成员的描述中,()是错误的。
A.静态成员可分为静态数据成员和静态成员函数B.静态数据成员定义后必须在类体内进行初始化C.静态数据成员初始化不使用其构造函数D.静态数据成员函数中不能直接引用非静态成员答案:B分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。
例题7:关于友元的描述中,()是错误的。
A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用D.友元类中的所有成员函数都是友元函数答案:A分析:友元函数是非成员函数,在类体内说明了,在类体外定义,定义和调用等同于一般的普通函数;由于它可以直接访问类的私有成员,因此破坏了类的封装性和隐藏性,尽量少用。
例题8:设有如下程序结构:class Box{ … };void main(){Box A,B,C; }该程序运行时调用 (1) 次构造函数;调用 (2) 次析构函数。
答案:(1)3(2)3分析:每创建一个对象自动调用一次构造函数,在这里创建了A、B、C三个对象,所以共调用了三次构造函数;每释放一个对象,系统自动调用一次析构函数,A、B、C对象释放时,分别调用析构函数,所以析构函数共调用了三次。
例题9:设A为test类的对象且赋有初值,则语句test B(A); 表示。
答案:将对象A复制给对象B。
分析:执行test B(A);语句相当于调用了默认复制构造函数,将A对象的属性复制给B 对象。
例题10:利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 (1)的成员;若要访问其他成员变量,需要通过 (2) 函数或 (3) 函数。
答案:(1) public (2) 成员函数 (3)友元函数分析:类体内的数据成员可声明为公有的、私有的和保护的,公有的数据成员可利用“对象名.成员变量”形式来进行访问;私有的数据成员能被类中的其他成员函数或友元函数所调用;保护的数据成员可以在类体中使用,也可以在派生类中使用,但不能在其他类外通过对象使用。
例题11:分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。
#include<>class one{ int a1,a2;public:one(int x1=0, x2=0);};void main(){one data(2,3);cout<<<<endl;cout<<<<endl;}分析:出错原因:构造函数参数表语法错;构造函数没有函数体;类的对象不能直接访问类的私有成员变量。
改正后的程序如下:#include<>class one{ int a1, a2;public:one(int x1=0, int x2=0) {a1=x1;a2=x2;}int geta1(){ return a1; }int geta2(){ return a2; }};void main(){one data(2,3);cout<<()<<endl;cout<<()<<endl;}例题12:分析以下程序的错误原因,给出修改方案使之能正确运行。
#include <>class Amplifier{float invol,outvol;public:Amplifier(float vin,float vout){invol=vin;outvol=vout;}float gain();};Amplifier::float gain(){ return outvol/invol; }void main(){Amplifier amp,;cout<<"\n\nThe gain is =>"<<gain()<<endl;}分析:成员函数在类体外定义格式是:函数返回类型类名::成员函数名(参数表);成员函数调用格式是:对象名.成员函数名(参数表)。
改正后的程序如下:#include <>class Amplifier{ float invol,outvol;public:Amplifier(float vin,float vout) {invol=vin;outvol=vout;}float gain();};float Amplifier::gain(){ return outvol/invol;}void main(){ Amplifier amp,;cout<<"\n\nThe gain is =>"<<()<<endl;}例题13:下列程序的运行结果是。
#include <>class point{int x,y;public:point(int a,int b){x=a;y=b;cout<<"calling the constructor function."<<endl;}point(point &p);friend point move(point q);~point(){cout<<"calling the destructor function.\n";}int getx(){return x;}int gety() {return y;}};point::point(point &p){x=;y=;cout<<"calling the copy_initialization constructor function.\n";}point move(point q){cout<<"OK!\n";int i,j;i=+10;j=+20;point r(i,j);return r;}void main(){ point m(15,40),p(0,0);point n(m);p=move(n);cout<<"p="<<()<<","<<()<<endl;}分析:根据构造函数、拷贝构造函数和友元函数的特点,执行该程序后,输出结果是:calling the constructor function.calling the constructor function.calling the copy_initialization constructor function.calling the copy_initialization constructor function.OK!calling the constructor function.calling the copy_initialization constructor function.calling the destructor function.calling the destructor function.calling the destructor function.P=25,60calling the destructor function.calling the destructor function.calling the destructor function.说明:(1)构造函数执行三次,分别初始化主函数中的对象m,p和move函数中的对象r。