C++使用指针,打印地址而不是值,为什么?(使用操作员)

C++使用指针,打印地址而不是值,为什么?(使用操作员),c++,C++,我编写了vector类,但当我在主窗口中打印对象时,它会打印值的地址,为什么? 非常感谢你的帮助 Vector.header: #include <iostream> class Vector{ private: int* first; int* second; public: Vector(); Vector(int num1, int num2); ~Vector(); Vector(Vector& other); int* getFirst(); void se

我编写了vector类,但当我在主窗口中打印对象时,它会打印值的地址,为什么? 非常感谢你的帮助

Vector.header:

#include <iostream>
class Vector{
private: 
int* first;
int* second;

public: 

Vector();
Vector(int num1, int num2);
~Vector();
Vector(Vector& other);
int* getFirst();
void setFirst(int* first);
int* getSecond();
void setSecond(int* second);
void print();

const Vector& operator=(const Vector& other){
    first = other.first;
    second = other.second;
    return *this;
}

Vector operator++(){
    return Vector(*first + 1, *second + 1);
}

Vector operator--(){
    return Vector(*first - 1, *second - 1);
}
};

Vector::Vector(){
first = 0;
second = 0;
}

Vector::Vector(int num1, int num2){
first = &num1;
second = &num2;
}

Vector::~Vector(){

}

Vector::Vector(Vector& other) : first(other.first), second(other.second){}

int* Vector::getFirst(){
return first;
}

void Vector::setFirst(int* f){
first = f;
}

int* Vector::getSecond(){
return second;
}

void Vector::setSecond(int* s){
second = s;
}

void Vector::print(){
std::cout << "<" << getFirst() << "," << getSecond() << ">" << std::endl;
}
main.cpp:

#include <iostream>
#include "Vector.h"
int main(){
Vector* v1 = new Vector(2, 3);
Vector* v2 = new Vector(5, 6);

v1++;
v2--;

v1->print();
v2->print();

system("pause");
return 0;
}
打印我:

<FDFDFDFD,ABABABAB>

<0000008F,FDFDFDFD>
谢谢你的帮助

我在我的main中打印对象,它打印值的地址,为什么

因为每个表达式的类型都是指针。指定和流插入运算符以使用指针操作数输出地址,除非它是指向字符的指针

请注意,程序的行为未定义,因为您在指向任意地址的指针上调用成员函数:

此时v1指向一个有效的对象

现在v1不再指向有效对象


行为未定义。

打印指针值时,您希望看到什么?你的意思是使用*取消对它们的引用吗?欢迎使用堆栈溢出。请花点时间阅读并参考您可以在此处询问的内容和方式。您的构造函数向量num1,int num2正在存储构造函数退出时超出范围的临时变量的地址。第一次或第二次取消引用将被取消。您不能先做=&num1;或秒=&num2;为什么第一个和第二个指针指向整数?把它们变成整数,这个问题就解决了。
Vector* v1 = new Vector(2, 3);
v1++;
v1->print();