我编写了矢量类,但是当我在main中打印对象时,它会打印出值的地址,为什么? 非常感谢你的帮助。
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>
感谢您的帮助........
答案 0 :(得分:0)
我在主打印物体时打印出值的地址,为什么?
因为每个表达式的类型是指针。并且指定了流插入运算符以使用指针操作数输出地址(除非它是指向字符的指针)。
请注意,程序的行为是未定义的,因为您在指向任意地址的指针上调用成员函数:
Vector* v1 = new Vector(2, 3);
此时v1
指向有效对象。
v1++;
现在v1
不再指向有效对象。
v1->print();
行为未定义。