关于c++的protected关键字
分类
c++基础知识
引言
做了很业务,c++基础知识却忘了很多,今天看了一个例子,唤醒了我关于c++三大特性之一----封装,尘封的记忆。。。
例子
1)错误的demo
错误发生在main函数中…
#include <iostream>
#include <memory> // 引入智能指针的头文件
using namespace std;
// 操作基类
class Operate {
public:
Operate() {
}
virtual ~Operate() {
}
virtual int GetResult() = 0; // 纯虚函数,强制派生类实现
protected:
int NumsA, NumsB;
};
// 加法操作类
class AddOperate : public Operate {
public:
int GetResult() override {
return NumsA + NumsB;
}
};
// 减法操作类
class SubOperate : public Operate {
public:
int GetResult() override {
return NumsA - NumsB;
}
};
// 乘法操作类
class MulOperate : public Operate {
public:
int GetResult() override {
return NumsA * NumsB;
}
};
// 除法操作类
class DivOperate : public Operate {
public:
int GetResult() override {
if (NumsB == 0) {
throw runtime_error("Division by zero is not allowed.");
}
return NumsA / NumsB;
}
};
// 操作工厂类
class OperateFactory {
public:
OperateFactory() {
}
std::unique_ptr<Operate> CreateOperate(char op) {
switch (op) {
case '+': return std::make_unique<AddOperate>();
case '-&