(part_3):面向对象编程的几个难点(一)。

1、拷贝构造函数

很多人都会说:“构造函数不就是在新建(构造)一个对象的时候调用一下吗……这有啥可讲的……

class student {
private:
	int a;
public:
	int b;
	student(int num) { b = num; }
};
int main()
{
	student n(1);
	cout << n.b;
	return 0;
}
///样例,利用构造函数来进行给b赋初值。

但是假如有一个student类n和n1,这个时候你就会发现一个有趣的事情,如果你要让n中的数据等于n1,你恐怕要写很多语句。这时候就是拷贝构造函数的用途了。

你可以轻松的通过n来构造n1……

class student {
private:
	int a;
public:
	int b;
	student() {  }
	student(int num) { b = num; }
	student(const student &z) { b = z.b; }
};
int main()
{
	student n(10),n1(n);
	cout << n.b << endl;
	cout << n1.b;
	return 0;
}

这可太错误了,如果写成这个样子,恐怕是不可以的,毕竟人家是拷贝构造,还是只能在构造的时候使用……

int main()
{
	student n(10),n1;
	cout << n.b << endl;
	n1(n);
	cout << n1.b;
	return 0;
}

当然系统会自己提供一个默认构造函数的……也就是n=n1;

2、析构函数

要点就是main函数结束后,析构多个对象时。系统首先析构静态的局部对象,最后析构全局对象。

class student {
private:
	int a;
public:
	int b=10;
	student(int num) { b = num; }
	~student() { cout << b << endl; }
};
void test()
{
	student zj(29);
	cout << zj.b-1 << endl;
}
int main()
{
	student n(1);
	cout << n.b+1 << endl;
	test();
	return 0;
}

3、const(常量)和类

如果你有一个函数被加上了const,那么它就不能调用其他的函数、更改数值等操作,起到安全的作用。

class student {
private:
	int a=50;
public:
	int b=10;
	student(int num) { a = num; }
	void look_a() const { cout << a << endl; }
	void look_b() { cout << b << endl; }
};
int main()
{
	student n(50);
	n.look_a();
	n.look_b();
	return 0;
}

4、静态成员

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值