回 帖 发 新 帖 刷新版面

主题:指针的初始化问题,很困惑

学习c/c++时就知道,声明了一个指针之后要记着初始化它,否则指针操作很容易出错。可是在IDE环境下我发现有很多定义的指针变量,并没有初始化就可以使用。
比如新建一个窗体,在上面放置几个按钮或文本框,在.h和.cpp中会自动生成TForm1类、按钮或文本框对象指针、窗体对象指针,这些指针没有初始化就可以引用,诸如Btn->Left、Edit->Text,这是怎么回事?

回复列表 (共5个回复)

沙发

我想你往Form上放的Edit等是类的可视化实例,指针在类里初始化就可以了。

板凳

指针在类里初始化?类里怎么能有具体的东西呢?

3 楼

指针实在他的父类里进行初始化的,例如父类里的构造函数里面,当调用子类时,首先要初始化父类,然后在初始化子类。有一些东西是隐含调用的。例如父类的构造函数

4 楼

模棱两可,不太明白。

5 楼

比如说在主窗口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;
... ...
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册