您的位置:首页 > 科技 > IT业 > 企业网站建设知识应用技能_营销策略论文_google竞价推广_站长统计官网

企业网站建设知识应用技能_营销策略论文_google竞价推广_站长统计官网

2024/12/23 22:28:37 来源:https://blog.csdn.net/2202_75941514/article/details/144562153  浏览:    关键词:企业网站建设知识应用技能_营销策略论文_google竞价推广_站长统计官网
企业网站建设知识应用技能_营销策略论文_google竞价推广_站长统计官网

对象克隆

在 C++ 中,对象克隆是创建一个与现有对象具有相同状态的新对象的过程。

浅拷贝实现克隆

对于简单的类(没有动态分配资源的类),可以通过默认的拷贝构造函数来实现浅拷贝。例如:

class MyClass {
public:int value;MyClass(int v) : value(v) {}// 编译器会自动生成一个默认的拷贝构造函数,进行浅拷贝
};

当使用MyClass obj1(10); MyClass obj2 = obj1;时,obj2就是obj1的一个浅拷贝。这里的浅拷贝只是简单地复制了value成员的值。

深拷贝实现克隆

当类中有动态分配的资源(如指针成员)时,就需要自定义拷贝构造函数来实现深拷贝。例如:

class MyString {
private:char* buffer;
public:MyString(const char* input) {buffer = new char[strlen(input) + 1];strcpy(buffer, input);}// 自定义拷贝构造函数实现深拷贝MyString(const MyString& other) {buffer = new char[strlen(other.buffer)+1];strcpy(buffer, other.buffer);}~MyString() {delete[] buffer;}
};

在上面的MyString类中,自定义的拷贝构造函数会为新对象的buffer指针分配新的内存空间,并将原对象buffer中的内容复制过来,这样就避免了两个对象的buffer指针指向同一块内存的问题。

单例模式实现

单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。

饿汉式单例模式

这种方式在程序启动时就创建单例对象。例如:

class Singleton {
private:static Singleton* instance;Singleton() {}
public:static Singleton* getInstance() {return instance;}
};
// 初始化静态成员变量
Singleton* Singleton::instance = new Singleton;

在这个例子中,Singleton类的构造函数是私有的,这样就防止了外部代码直接创建Singleton类的对象。instance是一个静态成员变量,在程序启动时就被初始化,getInstance函数提供了获取这个单例对象的接口。

懒汉式单例模式(线程安全版本)

懒汉式单例模式是在第一次调用getInstance函数时才创建单例对象,这种方式可能存在线程安全问题在多线程环境下保证线程安全。例如:

class Singleton {
private:static Singleton* instance;Singleton() {}static std::mutex mutex_;
public:static Singleton* getInstance() {std::lock_guard<std::mutex> lock(mutex_);if (instance == nullptr) {instance = new Singleton;}return instance;}
};
// 初始化静态成员变量
Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mutex_;

这里使用了std::mutex来保证在多线程环境下,只有一个线程能够进入if语句块来创建单例对象。std::lock_guard在构造函数中自动加锁,在析构函数中自动解锁,保证了锁的正确使用。

单例模式在面向对象编程中的应用场景有哪些?

数据库连接管理确保整个程序只有一个数据库连接实例避免重复创建连接带来资源浪费性能问题

配置管理:存储管理程序全局配置信息方便程序任何地方访问

日志系统:提供一个全局日志记录器确保所有日志信息记录同一个地方

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com