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; //正确 #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;
}