主题:指针的初始化问题,很困惑
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;
... ...
}
我来回复