C++ 类的不变性和优缺点
C++ Immutability of classes and pros/cons
我知道有三种方法可以创建一个不可变的对象。
方法1:内部不可变的类成员,内部和外部不可修改。
#ifndef INTERNALLY_IMMUTABLE_HPP
#define INTERNALLY_IMMUTABLE_HPP
#include <string>
class internally_immutable
{
public:
internally_immutable(const std::string & str)
: str_(str)
{
}
std::string get_str() const
{
return str_;
}
private:
const std::string str_;
};
#endif
方法2:外部不可变的类成员,外部不可修改的类成员。
#ifndef EXTERNALLY_IMMUTABLE_HPP
#define EXTERNALLY_IMMUTABLE_HPP
#include <string>
#include <vector>
class externally_immutable
{
public:
externally_immutable(const std::string & str)
: str_(str)
{
}
std::string get_str() const
{
return str_;
}
private:
std::string str_;
};
#endif
方法3:类型不可变,部分外部不可修改,因为有人可以绕过你的typedef。
#ifndef TYPED_IMMUTABLE_HPP
#define TYPED_IMMUTABLE_HPP
#include <string>
#include <vector>
typedef const typed_mutable typed_immutable;
class typed_mutable
{
public:
typed_mutable(const std::string & str)
: str_(str),
vec_()
{
}
void set_str(const std::string & str)
{
str_ = str;
}
std::string get_str() const
{
return str_;
}
private:
std::string str_;
};
#endif
每种不可变类型的优缺点是什么?编译器优化,障碍,每种类型的用法...是否有其他方法可以在C++中创建不可变对象?在C++中创建这些不可变类的推荐或最常见的方法是什么?
在这种情况下
,您可以使构造函数私有时将不可变类设置为私有,您的派生类无法访问基类。像. 类externally_immutable { 私人: externally_immutable(const std::string & str) : str_(str){} 待办事项 常量字符串str_;};
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 我的神经网络不起作用 [XOR 问题]
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- QSqlquery prepare()和bindvalue()不工作
- 努力将整数转换为链表。不知道我在这里做错了什么
- 整数不会重复超过随机数
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 检查输入是否不是整数或数字
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 使用不带参数的函数访问结构元素
- C++中右值引用的分配和不变性
- 关于 Python 元组的不变性
- C++ 类的不变性和优缺点
- 易变性只是不符合任何范式
- 为什么这个不变性会变成假的
- 皮提亚的bbbar对的质量不变性
- 使用const公共成员强制所有实例的不变性是合理的做法吗
- C++-具有结构共享/不变性的类映射数据结构