首页 > 试题广场 >

有关引用,下列说法错误的是()?

[单选题]
有关引用,下列说法错误的是()?
  • 引用定义时必须初始化
  • 类的非静态引用成员变量不需要在构造函数中初始化
  • 数组可以有引用,但没有引用数组
  • public派生对象可以初始化基类类型的引用
  • 整型数据的常引用可以直接用数值初始化
  • 以上选项都不是
BCE
A:声明引用时,必须同时对其进行初始化;正确;
B:常量(const)和引用(&)必须听过参数列表进行初始化;错误;
C:数组是若干个元素的集合,不能建立一个数组的引用;错误;
D:正确;
引用和多态

引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。

eg:

class  A; class  B:public A{……}; B  b; A  &Ref = b; // 用派生类对象初始化基类对象的引用

Ref 只能用来访问派生类对象中从基类继承下来的成员,是基类引用指向派生类。如果A类中定义有虚函数,并且在B类中重写了这个虚函数,就可以通过Ref产生多态效果。

E:常引用声明的变量不能通过引用对目标变量进行修改;错误; eg. int a ; const int &ra=a; ra=1; //错误 a=1; //正确

发表于 2017-09-12 21:12:44 回复(0)
选BD,亲测
#include <iostream>
using namespace std;
class B
{
public:
	B()
	{
		cout << "B" << endl;
	}
	void fun()
	{
		cout << "B::fun()" << endl;
	}
private:
	int x;
	//int &y;  //错误,类的非静态引用成员变量在构造函数中初始化
};

class D : public B
{
public:
	D()
	{
		cout << "D" << endl;
	}
	void fun()
	{
		cout << "D::fun()" << endl;
	}
	void show()
	{
		cout << "D::show()" << endl;
	}
private:
	int y;
};

int main()
{
	D d;
	B &p = d;
	p.fun();
	const int& a = 1.0;
	//p.show();          //错误,派生类对象初始化基类的引用不能用于派生类
	system("pause");
	return 0;
}

发表于 2016-09-27 18:30:25 回复(0)
bce吧,c++中数组没有引用啊,而且引用是变量别名,直接赋值是不行的吧
发表于 2015-11-16 21:16:23 回复(0)
发表于 2015-04-30 11:21:02 回复(1)
期待高手解释

发表于 2015-01-09 15:20:18 回复(0)