作为成员变量的引用
Reference as member variable
有人能解释一下为什么代码中的类TaxWay不能保存由引用初始化的成员变量Bank ?我应该在代码中做些什么更改以使其正确?当我将成员变量更改为引用Bank&
时,它就工作了。我认为同样的情况也应该发生在"非引用变量"上。怎样才能做到呢?
class Bank;
class TaxWay : public Way
{
public:
TaxSquare(int, int, Bank&);
virtual void process();
private:
int taxAmount;
Bank bank;
};
TaxWay::TaxWay(int anID, int amount, Bank& theBank)
: Way(anID),taxAmount(amount),bank(theBank)
{
}
我创建了一个对象:
TaxWay TaxWay9(9,150, theBank);
两个重点:
-
如果要将成员变量声明为
Bank bank
,则必须包含包含Bank
类定义的头文件。 -
但是,如果您想将其声明为
Bank & bank
或Bank *bank
,则前向声明就足够了。在这种情况下,不需要定义类Bank
,除非您想访问Bank
的任何成员(例如,在类TaxWay
的某些成员函数的内联定义中)。
一件事(这可能是也可能不是您的问题)是您已经将Bank
声明为没有定义的前向声明。当编译器到达TaxWay
时,您将无法声明Bank
类型的成员变量,因为编译器还不知道Bank
类的任何信息。
在这个例子中,TaxWay
类不能保存银行的副本,因为您没有定义Bank
类。至少要知道Bank
类的大小,这样才能分配空间。
另一方面,根据Bank
包含的内容,复制它可能不是一个好主意。这也会复制银行里的钱吗?: -)
相关文章:
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 多个"常量引用"变量可以共享同一个内存吗?
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- C++方法中的引用变量
- 作为赋值(增加引用变量)C++的左操作数所需的左值
- 使用更改此变量的函数在同一行中打印引用变量
- 将延迟变量分配给引用变量
- 如何通过引用获取引用变量的地址?
- 将引用变量传递给函数
- C++中引用变量的内存?
- 按名称存储和引用变量列表
- 返回一个C++引用变量 VS 返回一个变量
- c++ 在 if 语句中分配引用变量
- 引用变量何时合适,为什么?你能解释一下实际的语法和位置吗?
- C++ - 将一个变量分配给另一个变量和将变量分配给引用变量有什么区别?
- 在类范围内声明时,应在 C++14 中引用变量模板
- 当引用变量的引用"死亡"时,它会发生什么?
- 将非按引用变量分配给返回按引用的函数,反之亦然
- 引用变量如何存储在mem中
- 引用变量存储在哪里