一小段C++程序反映出的问题

#include<string>
#include<iostream>

using namespace std;

class A{
public:
	A(int n){ value = n; }
	A(const A& other){ value = other.value; }		
	//直接调用other的私有成员,这是因为访问权限针对的是类而不是对象,所以在同一个类中,还是可以直接访问私有成员变量的
	//注意拷贝构造函数的参数不能定义为A(A other)因为这样的话相当于传值,形参复制到实参就会调用拷贝函数,因此会在拷贝构造函数内调用拷贝构造函数,形成无休止的
	//递归调用而导致栈溢出。
	void print(){ cout << value << endl; }
private:
	int value;
};



void main(){
	A a = 10;	//复制初始化,首先调用构造函数A(int n)函数创建一个临时对象,然后调用拷贝构造函数,把这个临时对象作为参数,构造对象a
	A b = a;	//复制初始化,因为a本就存在,所以直接调用拷贝构造函数,构造对象b
	b.print();
	system("PAUSE");
	return;
}

这里涉及到的问题:

构造函数的参数设置

成员变量的访问权限是针对类而不是对象而言

构造函数的调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值