C++中的类问题,A为父类,B为子类,B类里面创建了A类的对象,然后在main里创建B类对象,构造函数怎么执行。

#include <iostream>
using namespace std;

class A{
public:
A(int i){
cout << i << " Constructor of A" << endl;
}
A(){
cout << "Constructor of A" << endl;
}
~A(){
cout << "Desconstructor of A" << endl;
}
};

class B:public A{
public:
//注意静态成员对象比较特殊,会在编译期间进行初始化
static A a1;
A a2;
A a3;
B():a2(A(2)){
cout << "constructor of B" << endl;
}
~B(){
cout << "Desconstructor of B" << endl;
}
};

A B::a1=A(1);

int main()
{
B b;
return 0;
}

第1个回答  2012-06-29
1、先执行A(1)对a1构造,输出"1Constructor of A";
2、执行A(),初始化父类,输出"Constructor of A";
3、执行A(2),输出"2Constructor of A";
4、执行A(&A)对a2构造,即默认拷贝构造函数,不输出;
5、执行A(),对a3构造。
6、执行B()内的语句,输出"Constructor of B";
第2个回答  2012-06-26
1.首先执行没有参数列表的A类的构造函数
2.在执行有参数列表的A类构造函数
3.又执行没有参数列表的A类的构造函数
4.再执行B的构造函数本回答被网友采纳
第3个回答  2012-06-26
1,静态成员执行A(int i)
2,父类A执行A()
3,子类a2执行A(int i)
4,子类a3执行A()
5,子类执行B()
第4个回答  2012-06-27
先执行父类构造函数在执行子类构造函数

c++中 子类对象与父类对象的内存关系
分别创建A,B对象的话,二者的地址关系是没关系的。但是对于创建的B对象来说,他的前半部分相当于一个A对象,然后紧挨着下面是自己的数据成员,如下图:

C++中类之间的依赖关系
关系1: 没有关系 两个对象之间如果没有关系,那么它们是孤立的。关系2: 关联关系 (Association)A和B之间是关联关系;C与自己关联 关系3:有方向的关联关系 (DirectedAssociation)关联还可以有方向性的。如下图 这种关系是关联关系的一种。关系4: 聚合关系(Aggregate)聚合关系也是关联关系的一种,这种关...

请教大神,VC++中MFC的问题 我想在A类中调用B类中的成员函数。我在A类...
B类的成员函数可以调用B类中私有,保护,共有的全部函数,不存在权限问题。如果出现编译错误,请调用的B类成员函数是否为静态成员。根据C++的规定,静态成员函数只能调用静态成员变量和静态成员函数。普通函数是无法调用的。

c++中父类对象和子类对象之间如何转换
子类对象的引用和指针可以转换为父类对象的引用和指针。但是,严格来说子类对象不可以转换为父类对象,然而,确实可以在需要一个父类对象的地方使用子类对象,这种是借助于子类对象引用与父类对象引用的转换 以及 父类对象的copy构造函数实现的。例如:Base 为父类,B1 是其子类。B1 b;Base a(b);...

C++如何在一个类中引用另一个类的变量
1.两个都是类,即类的静态变量(static修饰),一个类自然可以引用静态变量,因为静态变量是在程序进入main函数前就已经初始化完了。2.一个类A一个实例B(A类产生的对象),A当然无法在类的内部引用(即定义中),因为实例是在程序中动态分配的内存,类A必然先于实例B存在,所以A并不能知道B的存在。

c++父类对象能否访问子类对象?
不太明白你的意思。如果你是指父类能否访问子类的成员,很明显不能,因为子类是未知的,但是虚函数可以满足你的要求,因为虚函数可以延迟到子类去实现。

PublicC++
class A{ public:int a;private:int b;};在这个例子中,a是一个public成员,可以通过类A的对象进行访问,而b是一个private成员,只能在类A内部访问。在main函数中,我们创建了一个A类的对象aa,并可以设置成员变量a的值。cpp main(){ A aa;aa.a=1;} 然而,当我们尝试设置成员变量b的值时,...

vc++ 在一个类中怎么调用另一个类的变量
2.5.访问变量的语句所在的类定义在被访问变量所在的类的内部。现在假设满足以上前提条件的B类的某个成员函数或成员初始化的语句要引用A类的成员m,那么 1.当m是A类的静态成员时,可以通过A::m引用;2.当m是A类的非静态成员,且对象a是类A的实例时,可以通过a.m引用。参考资料:原创 ...

C++类的继承问题!我写的时候出现了“未定义的基类”!求大神帮我解解惑...
按照你的叙述的顺序,有一个错误的地方:你在C类里创建B的对象时,B还没有定义,此时是无法在C类里创建B的对象的。可以这样做:在C类之前声明B类但不定义它,然后在C类里定义指向B类的指针或引用,但不能定义对象。

在C#中类A:类B是什么意思
表示A类继承类B 也是就说了B是基类,A类是派生类(或叫使子类)。B类是A类的父类。在B类声明的属性,方法等,在A类中都得到继承。但A类中,也可以有自己的方法,属性等 也可以通俗的这样理解,A类是B类的一种特殊情况,A类是“等边三角形”B类是“三角形”。

相似回答