主题:指针的初始化问题,很困惑
			
 youxiazhu
				 [专家分:60]  发布于 2005-11-15 23:05:00							
			学习c/c++时就知道,声明了一个指针之后要记着初始化它,否则指针操作很容易出错。可是在IDE环境下我发现有很多定义的指针变量,并没有初始化就可以使用。
比如新建一个窗体,在上面放置几个按钮或文本框,在.h和.cpp中会自动生成TForm1类、按钮或文本框对象指针、窗体对象指针,这些指针没有初始化就可以引用,诸如Btn->Left、Edit->Text,这是怎么回事?
						
					 
		
			
回复列表 (共5个回复)
		
								
				沙发
				
					
Jacky117 [专家分:350]  发布于 2005-11-16 09:00:00				
				我想你往Form上放的Edit等是类的可视化实例,指针在类里初始化就可以了。
							 
						
				板凳
				
					
youxiazhu [专家分:60]  发布于 2005-11-17 23:04:00				
				指针在类里初始化?类里怎么能有具体的东西呢?
							 
						
				3 楼
				
					
清溪流泉 [专家分:50]  发布于 2005-11-24 16:57:00				
				指针实在他的父类里进行初始化的,例如父类里的构造函数里面,当调用子类时,首先要初始化父类,然后在初始化子类。有一些东西是隐含调用的。例如父类的构造函数
							 
						
				4 楼
				
					
youxiazhu [专家分:60]  发布于 2005-12-01 08:21:00				
				模棱两可,不太明白。
							 
						
				5 楼
				
					
CSQCPU [专家分:130]  发布于 2006-01-16 14:43:00				
				比如说在主窗口TForm1里放TEdit控件,如下
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TEdit *Edit1;
private:    // User declarations
public:        // User declarations
        __fastcall TForm1(TComponent* Owner);
};
在程序里就有隐含的代码如下:
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
Edit1 = new TEdit(this);  //编译时候自动加入的代码
... ...
}
__fastcall TEdit::TEdit()  //原有的代码
{
this->Left = x;   //x,y是DESIGN时候的设置值
this->Right= y;
... ...
}
							 
									
			
我来回复