15.4

本节大意
面向对象编程中的构造函数和复制控制

细节摘录
1. 如果某些类只希望派生类使用某个构造函数,可将其声明为protected。
2. 一个类的构造函数中只能初始化它的直接基类。
3. 当类发生重构,所有使用这些类的代码都要重新编译。
4. 请尊重基类接口,用基类的构造函数初始化基类。
5. 有指针成员的类要添加复制控制机制(3 rule)
6. 正如我们在派生类中调用基类构造函数初始化基类对象,我们也应当调用基类复制函数复制基类对象。
7. 每个析构函数只会负责清除自己的成员。
8. 析构函数应当声明为虚,当要用指针使用它以及它的派生对象的时候。
9. 如果为了将基类的虚函数声明为虚而特意定义了一个空的虚函数,那么这是三法则的唯一例外。
10. 虚函数的形参返回必须相同
11. 构造和赋值操作重载不能也不用是虚函数
12如果在构造函数【【【【【【【【【暂留】】】】


课后习题
1.
#include <iostream>

using namespace std;

class A {
private:
	int a;
public:
	A() {
		a=0;
	}
	int geta() {
		return a;
	}
};

class B : public A {
private:
	int b;
public:
	B(int b) : b(b), A() {
	}
	int getb() {
		return b;
	}
};

int main()
{
	A a;
	B b(9);

	cout << b.getb() << endl;

	return 0;
}

2. 略
3. a错 因为Base的默认函数是有参数的,而a没有提供。b错 跨基类调用构造函数。c错 原因同b。 d错 id没有声明在形参括号中。 e错 同样原因没有提供Base的构造实参。
4. 需要进行指针动态绑定时
5. 动态绑定

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值