习题(针对学习笔记16-30)

这篇博客详细介绍了C++中关于对象数组、this指针、友元函数的相关概念和作用,并提供了多个相关习题及解答,帮助读者深入理解这些概念在实际编程中的应用。
摘要由CSDN通过智能技术生成
1、什么是对象数组?

https://blog.csdn.net/aaqian1/article/details/84061049

2、什么是 this 指针?它的主要作用是什么?

https://blog.csdn.net/aaqian1/article/details/84137285

3、友元函数有什么作用?

https://blog.csdn.net/aaqian1/article/details/84427884
   友元函数不是当前类的成员函数,而是独立于当前类的外部函数,但它可以访问该类所有的成员,包括私有成员、保护成员和公有成员。
   当一个函数需要访问多个类时,友元函数非常有用,普通的成员函数只能访问其所属的类,但是多个类的友元函数能够访问相应的所有类的数据。此外,在某些情况,例如运算符被重载时,需要用到友元函数。

4、假设在程序中已经声明了类 point ,并建立了其对象 p1 和 p4 。那么 “p4=p1” 是什么意思?

  将对象 p1 数据成员的值拷贝到对象 p4 中,这个过程是通过默认赋值运算符函数实现的。
  对象的赋值指对其中的数据成员赋值,而不对成员函数赋值。两个对象之间的赋值,仅仅使这些对象中的数据成员相同,而两个对象仍是分离的。

5、在声明类时,正确的是( )。

A. 可以在类的声明中给数据成员赋初值。
B. 数据成员的数据类型可以是 register。
C. private、public、protected 可以按任意顺序出现。
D. 没有用 private、public、protected 定义的数据成员是公有成员。

答:选 C。可以参考:https://blog.csdn.net/aaqian1/article/details/83795185

6、下面有关静态成员函数的描述中,正确的是( )。

A. 在静态成员函数中可以使用 this 指针。
B. 在建立对象前,就可以为静态数据成员赋值。
C. 静态成员函数在类外定义时,要用 static 前缀。
D. 静态成员函数只能在类外定义。

答:选B。可以参考:https://blog.csdn.net/aaqian1/article/details/84329893

7、在下面有关友元函数的描述中,正确的说法是( )。

A. 友元函数是独立于当前类的外部函数。
B. 一个友元函数不能同时定义为两个类的友元函数。
C. 友元函数必须在类的外部定义。
D. 在外部定义友元函数时,必须加关键字 friend。

答:选 A。https://blog.csdn.net/aaqian1/article/details/84427884

8、友元的作用之一是( )。

A. 提高程序的运行效率。
B. 加强类的封装性。
C. 实现数据的隐藏性。
D. 增加成员函数的种类。

答:选 A。https://blog.csdn.net/aaqian1/article/details/84427884

9、以下程序用到的知识是

(1)参考:https://blog.csdn.net/aaqian1/article/details/84494415

#include<iostream>
using namespace std;
class B{
   
	private:
		int x,y;
	public:
		B(){
   }
		B(int i,int j){
   
			x=i;
			y=j;
		}
		void printb(){
   
			cout<<x<<","<<y<<endl;
		}
};
class A{
   
	private:
		B c;
	public:
		A(){
   }
		A(int i,int j);
		void printa();
};
A::A(int i,int j):c(i,j){
   }
void A::printa(){
   
	c.printb();
}
int main(){
   
	A a(7,8);
	a.printa();
	return 0;
}

(2)同上

#include<iostream>
using namespace std;
class A{
   
	private:
		int x,y;
	public:
		void set(int i,int j){
   
			x=i;
			y=j;
		}
		int get_y(){
   
			return y;
		}
};
class Box{
   
	private:
		int length,width;
		A lable;
	public:
		void set(int l,int w,int s,int p){
   
			length=l;
			width=w;
			lable.set(s,p);
		}
		int get_area(){
   
			return length*width;
		}
};
int main(){
   
	Box b;
	b.set(4,6,1,20);
	cout<<b.get_area()<<endl;
	return 0;
}

(3)参考:https://blog.csdn.net/aaqian1/article/details/84502579

#include<iostream>
using namespace std;
class Sample{
   
	private:
		int x,y;
	public:
		Sample(int i,int j){
   
			x=i;
			y=j;
		}
		void disp(){
   
			cout<<"disp1"<<endl;
		}
		void disp() const{
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值