c++ - 为什么我可以计算出对象变量?
问题描述
我正在尝试创建一个类 Complex(复数形式的 z=a+ib m,其中 a= _re 和 b=_im),我需要使用 2 个参数(double,double)创建和构造函数。_re 和 _im 是 2 个双指针,我不知道如何将它们指向一个值。这是代码,我不能修改 Class 因为是学校项目。
#include <iostream>
#include <cmath>
using namespace std;
class Complex {
private:
double* _re;
double* _im;
public:
Complex();
Complex(double, double);
void Display();
};
Complex::Complex()
{
_re = 0;
_im = 0;
cout << "Complex::Complex()" << endl;
}
Complex::Complex(double re, double im)
{
double* _re = new double;
_re = &re;
double* _im = new double;
_im = &im;
cout << "Complex::Complex(double re,double im)" << endl;
}
void Complex::Display()
{
int nr = 1;
cout << "z" << nr << "= " << *_re << "+i* " << *_im << endl; nr++;
}
int main()
{
Complex z1(2,3);
z1.Display();
return 0;
}
解决方案
您应该如下更新您的构造函数:
Complex::Complex(double re, double im)
{
_re = new double;
*_re = re;
_im = new double;
*_im = im;
cout << "Complex::Complex(double re,double im)" << endl;
}
请注意,以前当您声明double* _re = new double
它是一个局部变量时。所以你从来没有初始化类变量_re
和_im
.
更好的构造函数定义是使用构造函数成员初始化器列表语法。见下文:
Complex::Complex(double re, double im)
: _re(new double), _im(new double)
{
*_re = re;
*_im = im;
cout << "Complex::Complex(double re,double im)" << endl;
}
推荐阅读
- dojo - 使用 dojo 列中的标题
- angular - 量角器 waitForAngularEnabled
- c# - App.config 格式和访问 .NET 中的数据
- ios - 如何在 Xcode 中隐藏代码文档/注释?
- java - 检查 smoothScrollToPosition 何时完成
- google-sheets - Google Sheets API:调用者没有权限
- python - Python 没有看到它在它的路径中肯定有的模块
- css - 使用 CSS 更改 Shiny titlePanel 的颜色
- php - 来自路由器的 Laravel 5 替代调用控制器
- neo4j - 当关系已经存在时如何记录?