C++中类对象定义时的赋值错误的问题

本文探讨了在C++编程中遇到的类对象定义时赋值错误问题。问题出现在BQuery类中使用`g = Graph(in)`创建Graph对象时,导致成员变量值不正确。分析原因是C++的赋值操作可能在处理复合对象时产生问题。解决方案包括使用对象指针或者重载赋值运算符来确保正确赋值。

今天在写代码时,遇到了一个比较奇怪的问题.

问题描述

因为我的代码比较多,所以先给出我的代码结构,见下图:
在这里插入图片描述

我使用的类包括三个:在Graph.h文件中的Graph类,在Query.h文件中的Query类,在BQuery.h文件中的BQuery类.Query.h头文件包含了Graph.h头文件,所以在Query类中可以定义Graph类的对象;BQuery类继承了Query类,所以BQuery类中可以使用Query类中的变量(若父类中的变量访问权限是private,那么需要利用父类的成员函数对变量进行操作).
编码时出问题的代码如下所示,其中有一些与问题无关的代码用// … 省略.

Graph.h
class Graph{
	public:
		// 这里还有一部分其他变量
		int vsize; // 测试时使用的变量
		int vis_cur; // 测试时使用的变量
		// ...
		Graph();
		Graph(istream &);
		void readGraph();
		// ...
};
Graph.cpp
#include "Graph.h"
// ...
Graph::Graph(istream & in) {
	readGraph(in);
	cout << "vsize = " << vsize << " vis_cur = " << vis_cur << endl; // 输出结果:vsize = 3710 vis_cur = 3710
}
// ...
void Graph::readGraph(istream & in) {
	int n = 3710;
	vsize = n;
	vis_cur = n;
	cout <<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值