为什么Qt c ++应用程序在实例化没有属性的对象时不抛出异常?

我正在QtDesigner上开发应用程序。我已经将几个QPushButtons提升为MyButton。 MyButton只是扩展了QPushButton并添加了一个int属性。 在项目上工作时,我注意到我忘了升级我的QPushButton了,所以我开始徘徊,尽管我在不拥有该属性的对象上设置了属性,但为什么我的代码仍然可以工作。 通过将QPushButton指针强制转换为MyButton Pointer来设置对象的属性。

((MyButton*) ui->btnScreen)->intAttribute = 11;
cout << ((MyButton*) ui->btnScreen)->intAttribute << endl;

我没有收到错误,并且在控制台上得到了

11

那么,这意味着我不是对指针进行强制转换,而是直接对对象进行转换吗?

添加

假设我有ClassA和ClassB,它们扩展了ClassA。

int main(int arg,char** argv)
{
   ClassA a;
   ClassB *pB;
   pB = (ClassB *) &a;
   pB->foo();
   return 0;
}

class ClassA{
   public:
    ClassA(){}
};


class ClassB : public ClassA {
 public:
    void foo(){
        cout<<"HELLO"<<endl;
    }
};

为什么我没有得到SIGSEGV异常而不是打印出HELLO?

smithhyj 回答:为什么Qt c ++应用程序在实例化没有属性的对象时不抛出异常?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3137562.html

大家都在问