_JR++ 2021-06-23 10:00 采纳率: 50%
浏览 24

在成员函数内为什么可以定义该类的变量(对象),即使该类没定义好,没法确定内存?

#include <iostream>
using namespace std;
class Complex
{
		int re, im;
	public:
		Complex(int a = 0, int b = 0)
		{
			re = a;
			im = b;
		}
		
//Complex t;    		这里错误是因为不能确定Complex内存?
//Complex *p, &y; 		指针或引用类型就正确,因为不需要确定内存 
                    //但是定义引用类型为何正确?不是在定义应用变量时就应该初始化吗?
                    //Complex &y;没有立即初始化这里为何没报错?
		Complex add(Complex& s)   //为什么成员函数的返回值,形参甚至是在函数体内的变量t都可以是没定义好的本类Complex类型的
		·						  //不是像上面一样不能确定内存空间吗?  
		{
			Complex t;
			t.re = re + s.re;
			t.im = im + s.im;
			
			return t;
		}
		
		void display()
		{
			cout << re << "+" << im << "i" << endl;
		}
};

int main()
{
	Complex s1(1, 2);
	Complex s2(3, 4);
	
	Complex temp = s1.add(s2);
	temp.display();
	
	
	return 0;
}

/*输出是4+6i正确*/
  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-06-23 10:02
    关注

    当然可以了。内存是运行态的时候才考虑的事情。你现在只是编译态,只需要找到定义和实现体就可以了

    评论

报告相同问题?

悬赏问题

  • ¥15 TLE9879QXA40 电机驱动
  • ¥15 clion的参数提示怎么关闭
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀
  • ¥15 mifare plus卡认证
  • ¥30 LSTM预测结果是一条直线