构造函数的调用次序问题
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;
}
____________________________________________________________________________________________
_____________________________________________________________________________________________
#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;
}
____________________________________________________________________________________________
相关文章推荐
- 关于派生类构造函数与基类构造函数的调用顺序问题
- 多重继承、虚基类继承时,显式地调用基类构造函数,对象是如何初始化的问题
- C++对象构造函数与析构函数的调用时间问题
- C++中构造函数中调用虚函数的问题 转载
- java 中关于子类调用父类构造函数问题
- 对象初始化以及在构造函数和析构函数中调用virtual函数的问题
- C++中构造函数和析构函数避免调用虚函数的问题
- C++中构造函数和析构函数避免调用虚函数的问题
- C++ - 一个构造函数调用构造函数的问题
- 父类和子类中对于构造函数的调用问题
- 构造函数和析构函数的调用问题
- 解决VS2012 WPF中“对类型“ ”的构造函数执行符合制定的绑定约束的调用时引发了异常。行号为“3”,行位置为“9””问题的过程
- 多重继承、虚基类继承时,没有显式调用基类构造函数,对象是如何初始化的问题
- 关于构造函数的重载 用this语句的调用问题
- C++中构造函数和析构函数避免调用虚函数的问题
- 构造函数和析构函数中调用虚函数有什么问题
- C++ 构造函数,赋值构造函数,析构函数,赋值构造函数的调用次序
- C++中构造函数中调用虚函数的问题
- 构造函数调用构造函数进行数据成员初始化问题(极易出错)
- 构造函数与析构函数的调用次序