2012-11-30 36 views

回答

5

A的構造函數時自動調用你構建一個B.

如果您需要將參數傳遞到A的構造函數有它正常工作,明確要求其在B的構造函數:

B::B() 
:A(Blah) 
{ 
} 

這將是共同的,當A是的QObject,並且希望擁有的東西正確發生,你「會通過在B的構造函數父指針並傳遞到A的:

B::B(QObject* parent_) 
:A(parent_) 
{ 
} 

這是無關Qt和是一個純粹的C++概念。

2

您將有文件:

A.H

#ifndef A_H 
#define A_H 

class A 
{ 
public: 
    A(); 
}; 

#endif // A_H 

a.cpp

#include "a.h" 
#include <QDebug> 

A::A() 
{ 
    qDebug() << "A()"; 
} 

b.h

#ifndef B_H 
#define B_H 

#include "a.h" 

class B : public A 
{ 
public: 
    B(); 
}; 

#endif // B_H 

b.cpp

#include "b.h" 
#include <QDebug> 

B::B() : A() 
{ 
    qDebug() << "B()"; 
} 

main.cpp中

#include <QCoreApplication> 
#include <QDebug> 

#include "a.h" 
#include "b.h" 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    B ob; 

    return a.exec(); 
} 

而且它會打印出:

A() 
B() 
相關問題