那太疯狂了!
为了弄清楚对象在C++中是如何存储在内存中的,
我写了下面的代码来查看变量的地址。
但事情变得更加混乱。
所以在下面我想知道
为什么 1 不同于 2 ------这是否意味着它是一个指针?但为什么?
为什么 1 与 3 不同 ------它是通过引用传递的,它们应该是相同的?!
#include <iostream>
#include <vector>
using namespace std;
class A {
public:
A(int age, string name) : age_(age), name_(name){};
void SetAge(int age) {
age_ = age;
}
int age_;
string name_;
};
void insert(vector<A>& p) {//passed by reference
A a1{1, "tom"};
printf(" p: %p\n", p); // p: 0x7ffc6cc98080 ------------3
printf("&p: %p\n", &p);//&p: 0x7ffc6cc981a0 ------------4
printf("&a1: %p\n", &a1); // &a1: 0x7ffc6cc980c0 /on stack, that's no problem …Run Code Online (Sandbox Code Playgroud)