cppTest-6.2:对象成员

/**
 *cppTest-6.2:对象成员
 *
 *类类型的成员即对象成员,这个例子展示了如何初始化对象成员和一般成员。
 *author 炜sama
 */
#include<iostream.h>
#include<string.h>

//这个在下面要用到的类要在调用之前定义!......
//class string;//经过测试发现,这种类似于函数调用前先声明的方式对类不起作用!唯一起作用时刻就是当涉及到友元函数时。
class string{
private:
	char *str;
public:
	string(char *s){
		str=new char[strlen(s)+1];
		strcpy(str,s);
	}
	string(string &a)
	{
		str=new char[strlen(a.str)+1];
		strcpy(str,a.str);
	}
	~string(){  delete str;	}
	void show(){ cout<<str;	}
};

class person{
	string name;//这个成员是类类型,故称之为对象成员
	char sex;
	int age;
public:
	//对象成员初始化与一般成员不一样!不能直接赋值,而是:X::X(arg1,arg2,...,argn):memb1(arg1),memb2(arg2),...,membn(argn)
	//总之,对象成员一定要用这种方式来初始化,其他成员的初始化方式参考我的【cppTest-6.0:类中特殊的成员的初始化】。
	//经过测试发现成员的先后顺序怎样都可以。
	//person(char *xm,char xb,int nl):name(xm),sex(xb),age(nl){}//正确!大括号不能漏!
	//person(char *xm,char xb,int nl):name(xm){sex=xb;age=nl;}//正确!大括号不能漏!
	//person(char *xm,char xb,int nl):name(xm),age(nl){sex=xb;}//正确!大括号不能漏!
	//person(char *xm,char xb,int nl){name=xm;sex=xb;age=nl;}//错误!对象成员不能用普通方式初始化!
	person(char *xm,char xb,int nl):sex(xb),name(xm),age(nl){sex='f';}//正确!普通成员可以两种方式同时赋值都没问题。
	//使用这个构造函数输出的sex为f而不是m!!说明初始化顺序是参数列表再到构造函数内部代码!!

	void show()
	{
		cout<<"name:";
		name.show();
		cout<<",age:"<<age;
		cout<<",sex:"<<sex;
		cout<<endl;
	}
};
void main()
{
	person zh("zhang",'m',20);
	zh.show();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值