您的位置:首页 > 其它

构造函数的调用次序问题

2010-04-13 20:55 239 查看
chap_4.h

_____________________________________________________________________________________________

#ifndef CHAP_4_H
#define CHAP_4_H
#include "iostream"
using namespace std;
class A
{
public:
A(int a,int b)
{
x=a;
y=b;

cout<<"调用A的构造函数"<<endl;
}
A(int a=10) {}//这个也是默认构造函数,当定义了时,在main中A a就是可以正确的,但是如果没有自己定义默认构造函数,则A a就是错误的
private:
int x;
int y;
};

class B
{
public:
B(int a,int b)
{
x=a;
y=b;
cout<<"调用B的构造函数"<<endl;
}
private:
int x;
int y;
};

class C
{
public:
private:
int r,h;
B b1;
A a1;//构造函数的调用顺序与对象的声明顺序有关
public:
C(int a,int b,int c,int d,int e,int f):a1(c,d),b1(e,f)//与初始化列表中的顺序无关
{
r=a;
h=b;
cout<<"调用C的构造函数"<<endl;
}
void show()
{

}
};
#endif

————————————————————————————————————————————————————————————

chap_4.cpp

#include "stdafx.h"
#include "chap_4.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
A a;//当定义了类的构造函数时,则编译器就不产生默认的构造函数,除非自己定义默认构造函数(没有任何参数的构造参数或各参数均有默认值的构造函数,这与函数重载是一致的)构造函数的实现就是按照函数重载做的
C c(1,2,3,4,5,6);
int i;
cin>>i;
return 0;
}

____________________________________________________________________________________________
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: