当前位置: 首页 > news >正文

佛山微网站价格郑州网络营销

佛山微网站价格,郑州网络营销,wordpress 搜索没有按钮,自己建立网站服务器1.对象存储 1)栈存储: 对于局部对象,它们存储在栈上。当进入包含对象定义的代码块时,对象被创建并压入栈中。 例如: class fun { public: int a; }; void func() { fun A; // 对象存储在栈上,随着函数结束自动销毁…

1.对象存储

1)栈存储:

对于局部对象,它们存储在栈上。当进入包含对象定义的代码块时,对象被创建并压入栈中。

例如:

class fun {
public:
int a;
};
void func() {
fun A;  // 对象存储在栈上,随着函数结束自动销毁
A.a = 10;
}

栈存储的对象生命周期由其所在的作用域决定,作用域结束时对象自动销毁,不需要手动释放内存。

2)堆存储:

使用 new 运算符在堆上动态分配对象。

例如:

class fun {
public:
int a;
};
int main() {
fun* p = new fun();  // 在堆上分配对象
p->a = 20;
// 记得使用delete来释放内存
delete p;
return 0;
}

这种方式可以根据程序运行时的需求灵活分配内存,但需要手动使用 delete 来释放内存,避免内存泄漏。

对象恢复

2.序列化和反序列化:

1)序列化:是将对象的状态转换为可以存储或传输的格式,比如转换为字节流。可以通过重载 

例如,将一个包含基本数据类型成员的类对象序列化为一个文本格式:

#include <iostream>
#include <fstream>
class fun {
public:
int a;
friend std::ostream& operator<<(std::ostream& os, const fun& obj) {
os << obj.a;
return os;
}
};
int main() {
fun obj;
obj.a = 30;
std::ofstream file("a.txt");
file << obj;  // 将对象状态序列化到文件
file.close();
return 0;
}

2)反序列化:是从存储或传输的格式中恢复对象状态。可以通过重载 >> 运算符来实现简单的反序列化。

例如,从之前存储的文本文件中恢复对象状态:

#include <iostream>
#include <fstream>
class fun {
public:
int a;
friend std::istream& operator>>(std::istream& is, fun& obj) {
is >> obj.a;
return is;
}
};
int main() {
fun obj;
std::ifstream file("a.txt");
file >> obj;  // 从文件反序列化对象状态
std::cout << "Recovered a: " << obj.a << std::endl;
file.close();
return 0;
}

3.对象复制和移动语义:

1)复制:可以通过定义拷贝构造函数来复制对象。

例如:

class fun{
public:
int a;
MyClass(const fun& other) {
a = other.a;
}
};
int main() {
fun obj1;
obj1.a = 40;
fun obj2 = obj1;  // 调用拷贝构造函数复制对象
std::cout << "obj2 a: " << obj2.a << std::endl;
return 0;
}

2)移动:C++11引入了移动语义,通过移动构造函数和移动赋值运算符来高效地转移资源的所有权。

例如,对于一个管理动态分配内存的类:

#include <iostream>
#include <utility>
class MyString {
public:
char* buffer;
MyString() : buffer(nullptr) {}
MyString(const char* str) {
buffer = new char[strlen(str)+1];
strcpy(buffer, str);
}
MyString(MyString&& other) noexcept {
buffer = other.buffer;
other.buffer = nullptr;
}
MyString& operator=(MyString&& other) noexcept {
if (this!= &other) {
delete[] buffer;
buffer = other.buffer;
other.buffer = nullptr;
}
return *this;
}
~MyString() {
delete[] buffer;
}
};
int main() {
MyString str1("Hello");
MyString str2 = std::move(str1);  // 调用移动构造函数
std::cout << "str2: " << str2.buffer << std::endl;
return 0;
}

http://www.ritt.cn/news/28802.html

相关文章:

  • 天津建设银行网站首页营销推广策划方案
  • 校内 实训网站 建设方案百度竞价推广账户优化
  • 响应式网站制作视频图片优化
  • 做网站的专业长沙专业网络推广公司
  • 武汉网站建设哪家最好新网
  • 做网站的知识扬中网站制作
  • 新能源电动汽车电池使用寿命多久合肥seo网站管理
  • 浙江网站备案流程网站自建
  • 男女做那个视频网站网站优化关键词
  • 南平武夷山网站建设网络优化公司排名
  • 手机做网站自己做湖南正规seo公司
  • 网站内链是什么 怎么做企业培训课程ppt
  • 河北建设厅八大员报名网站深圳网站制作公司
  • 怎样做1个网站游戏推广平台哪个好
  • 做网站搭建服务器要多少钱百度一下百度首页登录
  • 一对一视频网站建设关键词查询
  • 建设网站需要哪些语言百度地图官网2022最新版下载
  • 做网站找模板去哪好seo搜索优化邵阳
  • 济南中桥信息做的小语种网站怎么样百度账号登录入口官网
  • 怎么办个人网站网络营销推广公司简介
  • 如何快速建立一个网站站长之家ppt模板
  • 自己做网站需要什么技能百度推广总部电话
  • 广州网站建设哪家有seo图片优化
  • wordpress 未加密seo接单一个月能赚多少钱
  • wordpress登录手机版湖南seo网站多少钱
  • 响应式网站广州网站建设搜索引擎优化的名词解释
  • 武汉做网站建设seo1视频发布会
  • 电子商务网站建设与维护总结抖音关键词用户搜索排名靠前
  • 武汉高端网站建设优化网络工程师培训机构排名
  • ps怎么做网站界面设计北京seo主管