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

大理网站建设公司扫描网站漏洞的软件

大理网站建设公司,扫描网站漏洞的软件,苏州做网站公司,建设网站技术标准C中使用复制构造函数确保深复制 复制构造函数是一个重载的构造函数#xff0c;由编写类的程序员提供。每当对象被复制时#xff0c;编译器都将调用复制构造函数。 为 MyString 类声明复制构造函数的语法如下#xff1a; class MyString {MyString(const MyString cop…C中使用复制构造函数确保深复制 复制构造函数是一个重载的构造函数由编写类的程序员提供。每当对象被复制时编译器都将调用复制构造函数。 为 MyString 类声明复制构造函数的语法如下 class MyString {MyString(const MyString copySource); // copy constructor };MyString::MyString(const MyString copySource) {// Copy constructor implementation code }复制构造函数接受一个以引用方式传入的当前类的对象作为参数。这个参数是源对象的别名您使用它来编写自定义的复制代码确保对所有缓冲区进行深复制如以下示例程序所示 #include iostream #include string.h using namespace std;class MyString { private:char* buffer;public:MyString() {}MyString(const char* initString) // constructor{buffer NULL;cout Default constructor: creating new MyString endl;if(initString ! NULL){buffer new char [strlen(initString) 1];strcpy(buffer, initString);cout buffer points to: 0x hex;cout (unsigned int*)buffer endl;}}MyString(const MyString copySource) // Copy constructor{buffer NULL;cout Copy constructor: copying from MyString endl;if(copySource.buffer ! NULL){// allocate own buffer buffer new char [strlen(copySource.buffer) 1];// deep copy from the source into local bufferstrcpy(buffer, copySource.buffer);cout buffer points to: 0x hex;cout (unsigned int*)buffer endl;}}MyString operator (const MyString addThis) {MyString newString;if (addThis.buffer ! NULL){newString.buffer new char[GetLength() strlen(addThis.buffer) 1];strcpy(newString.buffer, buffer);strcat(newString.buffer, addThis.buffer);}return newString;}// Destructor~MyString(){cout Invoking destructor, clearing up endl;delete [] buffer;}int GetLength() { return strlen(buffer); }const char* GetString(){ return buffer; } };void UseMyString(MyString str) {cout String buffer in MyString is str.GetLength();cout characters long endl;cout buffer contains: str.GetString() endl;return; }int main() {MyString sayHello(Hello from String Class);UseMyString(sayHello);return 0; }输出 Default constructor: creating new MyString buffer points to: 0x01232D90 Copy constructor: copying from MyString buffer points to: 0x01232DD8 String buffer in MyString is 17 characters long buffer contains: Hello from String Class Invoking destructor, clearing up Invoking destructor, clearing up分析 大多数代码都与程序清单 9.8 类似只是新增了一个复制构造函数第 2338 行。首先将重点放在 main( )上它与以前一样创建了对象 sayHello如第 65 行所示。创建 sayHello 导致了第 1 行输出这是由 MyString 的构造函数的第 12 行生成的。出于方便考虑这个构造函数还显示了 buffer 指向的内存地址。接下来 main( )将 sayHello 按值传递个函数 UseMyString( )如第 66 行所示这将自动调用复制构造函数输出指出了这一点。复制构造函数的代码与构造函数很像基本思想也相同检查 copySource.buffer 包含的 C 风格字符串的长度第 30 行分配相应数量的内存并将返回的指针赋给 buffer再使用 strcpy 将 copySource.buffer 的内容复制到 buffer第 33 行。这里并非浅复制复制指针的值而是深复制即将指向的内容复制到给当前对象新分配的缓冲区中。 程序的输出表明拷贝中的 buffer 指向的内存地址不同即两个对象并未指向同一个动态分配的内存地址。因此函数 UseMyString( )返回、形参 str 被销毁时析构函数对复制构造函数分配的内存地址调用 delete[] 而没有影响 main( )中 sayHello 指向的内存。 因此 这两个函数都执行完毕时成功地销毁了各自的对象没有导致应用程序崩溃。 该文章会更新欢迎大家批评指正。 推荐一个零声学院的C服务器开发课程个人觉得老师讲得不错 分享给大家LinuxNginxZeroMQMySQLRedis fastdfsMongoDBZK流媒体CDNP2PK8SDocker TCP/IP协程DPDK等技术内容 点击立即学习C/C后台高级服务器课程
http://www.hkea.cn/news/14442832/

相关文章:

  • 建设网站费用主要包括哪些公司网站怎么关闭
  • 梅州建设网站中山营销型网站建设
  • 成都网站优化排名推广小程序开发费用报价表
  • wordpress 缩率图网站的seo方案
  • 百度响应式网站怎么做财务管理系统
  • 设计网站的步骤常州辉煌网络网站制作
  • 网站管理员招聘网页设计如何收费
  • 网站开发的项目开发计划如何建立自己的平台
  • 专业的网站建设公司哪家好学建设网站去哪里学
  • 网站做关键词排行一个月多少钱网上注册公司需要哪些材料和流程
  • 本地的唐山网站建设wordpress图片站教程
  • 网站seo优化实例建筑施工组织设计毕业设计
  • 中国风html5网站模板ps ui做响应式网站要求
  • 一个网站可以做多少个关键词南阳做网站优化的公司
  • 住房和城乡建设部网站加装电梯wordpress for sea
  • 黄埭做网站佛山做网站费用
  • 海口专业网站搭建厂架设网站需要什么
  • linux可以做网站开发吗微信小程序开发介绍
  • 高站网站建设网站返回顶部代码
  • 购买域名和网站安徽省住房城乡建设厅网站官网
  • 牟平做网站全国企业信息公示系统官网
  • 网站建设与网页设计的区别微分销系统软件
  • 凡科建站官网地址安徽科技网站建设
  • 百度收不到我的网站做怎个样网做站个网站
  • 温州建站模板搭建广州市建设招标管理办公室网站
  • access2003做网站wordpress新建文章随机一个阅读量
  • 做家教用什么网站成都论坛网站建设
  • 北京上云网站建设公司成都注册公司需要什么材料和手续
  • 深圳搭建p2p网站网站建设作业百度云资源
  • 和田网站制作dw网页制作上机试题