已解决! 对象的另类赋值,那么创建对象有哪些方法呢?

看一下主函数中这个对象的赋值方法:

#include <iostream>
using std::cout;
using std::endl;
class A{
	public:
	A(int m):a(m){}
	void show(){cout<<a<<endl;}
	private:
	int a;
};
int main(int argc, char *argv[])
{
	A a=A(3);
	a.show();
	return 0;
}

这里面A a=A(3);   这是用的什么方法使得这个对象形成呢?

构造函数?还是复制构造函数?

答案是通过构造。


================================================================

一、直接办法:

        A   a(3);   //这样就调用构造函数,创建a对象。

        A    a=A(3); //同上构造函数

二、隐匿转换:

       A   a=3;  // 构造函数。

 三、new办法:

       A   *a=new A(3); // 调用构造函数,在自由存储区创建。

       A    *a=new A(b);//假定b(3),  一样可伊娃,但使用的是复制构造函数。

四、已知对象创建:

       A  b(3),a=b;  // 复制构造

五、列表法,同数组:

       A  a[3]={1,2,3};  //对应元素分别为1,2,3


由此我们来看一下例子:

#include <iostream>
using std::cout;
using std::endl;
class A{
	public:
	A(int m):a(m){cout<<"constructor"<<endl;}
	A(const A& x){cout<<"copy"<<endl;}
	void show(){cout<<a<<endl;}
	private:
	int a;
};
int main(int argc, char *argv[])
{
	cout<<"1"<<endl;
	A b(4);
	cout<<"2"<<endl;
	A* a=new A(3);
	cout<<"3"<<endl;
	A* c=new A(b);
	cout<<"4"<<endl;
	A d=A(4);
	cout<<"5"<<endl;
	A e=3;
	cout<<"6"<<endl;
	A f[4]={7,7,7,7};
	cout<<"7"<<endl;
	A  h=b;
	
	int j={3};
	A k={3};//万能的花括号初始法,终于失败了。 
	return 0;
}






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值