码迷,mamicode.com
首页 > 编程语言 > 详细

C++:派生类的默认构造函数和拷贝构造函数调用基类构造函数的机制(含程序验证)

时间:2015-01-21 11:37:33      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:c++   基类派生类   默认构造函数   拷贝构造函数   

     1、如果基类定义了不带参数的默认构造函数,则编译器为派生类自动生成的默认构造函数会调用基类的默认构造函数。

     2、如果基类定义了拷贝构造函数,则编译器为派生类自动生成的拷贝构造函数同样会调用基类的拷贝构造函数。

     3、如果基类定义了带参数的构造函数,派生类没有定义任何带参数的构造函数,则不能直接调用基类的带参构造函数,程序编译不通过。

    代码如下:

#include<iostream>
using namespace std;
//基类Game,定义了两个构造函数和一个拷贝构造函数
class Game
{
public:
	Game()
	{
		cout<<"构造函数:Game()\n";
	}
	Game(const Game& game)
	{
		cout<<"拷贝构造函数:Game(const Game& game)\n";
	}
	Game(int i)
	{
		cout<<"Game(int i)\n";
	}
};
//派生类Chess,没有定义任何构造函数和拷贝构造函数
class Chess : public Game
{

};

int main()
{
	Chess ch1;
	Chess ch2(ch1);
	//Chess ch3(1);
	cout<<"结束!";
	int i;
	cin>>i;
	return 0;
}
运行结果如下:

技术分享

   如果不注释掉“Chess ch3(1)”这一行,即直接调用带参数的构造函数会报错:没有与参数列表匹配的构造函数 "Chess::Chess" 实例,所以验证了第3条结论。

C++:派生类的默认构造函数和拷贝构造函数调用基类构造函数的机制(含程序验证)

标签:c++   基类派生类   默认构造函数   拷贝构造函数   

原文地址:http://blog.csdn.net/u013149325/article/details/42965013

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!