关于构造函数形参问题

#ifndef TABTENN0_H_
#define TABTENN0_H_

#include<string>

using std::string;

class TableTennisPlayer
{
private:
	string firstname;
	string lastname;
	bool hasTable;
public:
	TableTennisPlayer(const string &fn="none",const string &ln="none",bool ht=false);
	void Name()const;
	bool HasTable()const{return hasTable;};
	void ResetTable(bool v){hasTable=v;};
};
#endif
#include<iostream>
#include"tabtenn0.h"

TableTennisPlayer::TableTennisPlayer(const string &fn,const string &ln,bool ht)
{
	firstname=fn;
	lastname=ln;
	hasTable=ht;
}

void TableTennisPlayer::Name()const
{
	std::cout<<lastname<<","<<firstname;
}
#include<iostream>
#include"tabtenn0.h"

int main()
{
	using namespace std;
	TableTennisPlayer player1("Chuck","Blizzard",true);
	TableTennisPlayer player2("Tara","Boomdea",false);
	player1.Name();
	if(player1.HasTable())
	{
		cout<<": has a table."<<endl;

	}
	else
		cout<<": hasn't a table."<<endl;
	player2.Name();
	if(player2.HasTable())
	{
		cout<<": has a table."<<endl;

	}
	else
		cout<<": hasn't a table."<<endl;

	cin.get();
	return 0;
}


注意但该程序实例化对象使用的是C风格字符串作为参数:

<span style="white-space:pre">	</span>TableTennisPlayer player1("Chuck","Blizzard",true);
	TableTennisPlayer player2("Tara","Boomdea",false);

但构造函数的形参类型被声明为const string &.这导致类型不匹配,但与第12章创建的String累一样,string类有一个将const char *作为参数的构造函数,使用C风格字符串初始化string对象时,将自动调用这个构造函数。总之,可将string对象或C风格字符串作为构造函数TableTennisPlayer的参数;将前者作为参数时,将调用接受const string &作为参数的string构造函数,而将后者作为参数时,将调用接受const char *作为参数的string构造函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值