我们都熟悉C++中的别名。别名表示某个实体的另一个名称。因此,引用变量是别名,是现有变量/对象等的别名。
以下是用于添加对变量的引用的程序:
// C++ program to illustrate
// aliasing in variable
#include
using namespace std;
void aliasing(int N)
{
// Adding reference variable to
// N using &
int& a = N;
// Print the value pointed by
// reference variable
cout << "Value of a: " << a << endl;
// Update the value of N using
// reference variable
a = 100;
cout << "After Update:" << endl;
// Print the value of a and N
cout << "Value of a :" << a << endl;
cout << "Value of N :" << N << endl;
}
// Driver Code
int main()
{
// Given number
int N = 9;
// Function Call
aliasing(N);
return 0;
}
输出:
Value of a: 9
After Update:
Value of a :100
Value of N :100
说明:在上面的程序中,变量a是变量N的别名,这意味着我们为变量N赋予了另一个名称。所以什么都我们正在与一个做会影响n您还可以,反之亦然。
因此,当我们将a的值更改为100时,N的值也更改为100。
容器类中对象的引用:
上面的方法为任何变量提供别名是正确的,但是在容器的情况下,由于容器无法直接存储引用,因此上述方法将引发编译错误,但是还有另一种方法可以执行此操作。 C++ STL中的模板std :: reference_wrapper用于引用C++中的任何容器。 std :: reference_wrapper是一个类模板,它将引用包装在可复制的,可分配的对象中。它通常用作一种将引用存储在通常无法保存引用的标准容器(如矢量,列表等)中的机制。
下面是在容器类中添加对象引用的程序:
// C++ program to illustrate aliasing
// in list containers in C++
#include
using namespace std;
class gfg {
private:
int a;
public:
gfg(int a)
{
this->a = a;
}
void setValue(int a)
{
this->a = a;
}
int getValue()
{
return this->a;
}
};
// Driver Code
int main()
{
// Declare list with reference_wrapper
list > l;
// Object of class gfg
gfg obj(5);
l.push_back(obj);
// Print the value of a
cout << "Value of a for object obj is "
<< obj.getValue() << endl;
cout << "After Update" << endl;
// Change the value of a for Object obj
// using member function
obj.setValue(700);
// Print the value of a after Update
cout << "Value of a for object obj is "
<< obj.getValue() << endl;
cout << "\nValue stored in the list is ";
for (gfg i : l)
cout << i.getValue() << endl;
return 0;
}
输出:
Value of a for object obj is 5
After Update
Value of a for object obj is 700
Value stored in the list is 700
解释:
在上面的程序中,当创建类gfg的对象时,将调用构造函数并将变量a的值初始化为5。我们将对象的引用存储在列表中,然后更改了变量的值通过调用成员函数setValue()将a更改为700。现在,当我们看到存储在列表中的对象的属性a的值时。存储的值为700。
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。