引用作为类的成员

Posted buddho

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了引用作为类的成员相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <stdio.h>

using std::cout;
using std::endl;

class A{
public:
    A(int a):r(a){printf("A::r %p
", &r);}
    int & r;
};

int main()
{
    cout << sizeof(A)<<endl;
    int a = 0;
    printf("outer a %p
", &a);
    A b(a);
    return 0;
}

 

首先,sizeof(A)是8(64位系统),因为引用底层是用指针实现的。

 

其次,A的构造函数是有bug的。因为A.r引用的是形参。这个形参在构造函数调用的栈上,构造函数结束后立马销毁。

正确版本:

A(const int &a):r(a){}

以上是关于引用作为类的成员的主要内容,如果未能解决你的问题,请参考以下文章

C++基础之类和对象二

c++ 使用引用另一个类的类的非成员函数

提升引用成员抽象类的序列化

定义一个类的vector的成员变量的引用

如何初始化一个类的引用成员变量?

如何在抽象类的成员函数中使用/转换对“this”的引用?