当前位置:首页 > 面向对象程序设计课后习题答案
ss.push(str[i]);
for(i=0;i cout<<\ \ cout< 附:用C写反序输出程序 步骤:打开VC系统,FileànewàFileàC++Source Fileà改变路径Location为本章的路径àFile处写文件名àokà开始写C程序à之后编译运行 #include { int inverse(char str[]); //函数原型说明 char str[100]; printf(\ scanf(\ inverse(str); printf(\} int inverse(char str[]) //函数定义 { char t; int i,j; for(i=0,j=strlen(str);i str[i]=str[j-1]; str[j-1]=t; } return 0; } 第四章:类和对象(二) [4_1]什么是对象数组 所谓对象数组是指每一数组元素都是对象的数组,也就是说,若一个类有若干个对象,我们把这一系列的对象用一个数组来存放。对象数组的元素是对象,不仅具有数据成员,而且还有函数成员。 [4_2]什么是this指针?它的主要作用是什么? C++为成员函数提供了一个名字为this的指针,这个指针称为自引用指针。每当创建一个对象时,系统就把this指针初始化为指向该对象。每当调用一个成员函数时,系统就自动把this指针作为一个隐含的参数传给该函数。不同的对象调用同一个成员函数时,C++编译器将根据成员函数的this指针所指向的对象来确定应该引用哪一个对象的数据成员。 [4_3]友元函数有什么作用? 友元函数不是当前类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有对象的成员,包括私有成员和公有成员。通过友元函数可以在不放弃私有数据安全的情况下,使得类外部的函数能够访问类中的私有成员。 当一个函数需要访问多个类时,友元函数非常有用,普通的成员函数只能访问其所属的类,但是多个类的友元函数能够访问相应的所有类的数据。此外,在某些情况,例如运算符被重载时,需要用到友元函数。 [4_4]假设在程序中已经声明了类point,并建立了其对象p1和p2。请回答以下 几个语句有什么区别? (1)point p1,p2; 用带缺省参数的构造函数或不带参数的构造函数,定义了point 类的2个对象p1和p2。 (2)point p2=p1; 依据已存在的对象p1,用赋值形式调用拷贝构造函数,创建对 象p2。 (3)point p2(p1); 依据已存在的对象p1,用显示调用拷贝构造函数,创建对象 p2 (4)p2=p1; 对象赋值语句,将对象p1数据成员的值拷贝到对象p2中。 [4_5]在下面有关静态成员函数的描述中,正确的是(B)见书133页 说明:C++中规定在建立对象前,就可以为静态数据成员赋值。同时规定在静态 成员函数中不能使用this指针。静态成员函数在类外定义时,不需要用 static前缀。静态成员函数即可以在类内定义也可以在类外定义 [4_6]在下面有关友元函数的描述中,正确的说法是(A)(134) 说明:在C++中友元函数是独立于当前类的外部函数,一个友元函数可以同时定 义为两个类的友元函数。友元函数即可以在类的内部也可以在类的外部定 义,而在外部定义友元函数时,不必加关键字friend [4_7]友元函数的作用之一是(A)(134) 说明:由于友元函数可以直接访问对象的私有成员,所以友元的作用是提高程序 运行的效率。 [4_8]指出下面程序的错误,并说明原因:答案是将其中对应的2条改成: cout< 因为:非静态成员函数的调用方法与静态成员函数的调用方法不同。 [4_9]答: #include class CTest { public: const int y2; CTest(int i1,int i2):y1(i1),y2(i2) { y1=10; //错误,y1是调用const定义的,不能修改 x=y1; } int readme() const; // ….. private: int x; const int y1; }; int CTest::readme() const { int i; i=x; x++; //错误,函数定义用了const,表示该函数不能修改对象 return x; } void main() { CTest c(2,8); int i=c.y2; c.y2=i; //错误,y2是常量,不能修改 i=c.y1; //错误,y1是私有变量,不能直接存取 } [4_10]答: #include void use_friend(); private: int x; friend void friend_f(CTest fri); }; void friend_f(CTest fri) { fri.x=55; } void CTest::use_friend() { CTest fri; this->friend_f(fri); //错误。友元函数不是成员函数,所以不能用this->调用友//元函数 ::friend_f(fri); } void main() { CTest fri,fri1; fri.friend_f(fri); //错误,友元函数不是成员函数,所以不能用对象.函数名调 //用友元函数 friend_f(fri1); } [4_11]答: #include { x=20; } void use_this(); private: int x; }; void CTest::use_this() { CTest y,*pointer; this=&y; //错误,不能对this直接赋值 *this.x=10; //错误,按优先级原句的含义是*(this.x)=10,显然不对,正确的写 //法是(*this).x=10;或this->x=10; pointer=this; pointer=&y; } void main() { CTest y; this->x=235; //错误,this的引用不能在外部函数中,只能在内部函数中。 } [4_12]答:运行结果是: 10,20 30,48 50,68 70,80 90,16 11,120 [4_13]答:运行结果是: Constructing 10 Destructing. 100 Destructing [4_14]答:运行结果是: 3 objects in existence
共分享92篇相关文档