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

#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正确*/

 

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