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

网站做新闻外链有作用吗建设监理继续教育网站

网站做新闻外链有作用吗,建设监理继续教育网站,房产网站怎么推广,企业网站的制作成本目录 1、全局作用域 2、类作用域 2.1、设计模式之Pimpl 2.2、单例模式的自动释放 2.2.0、检测内存泄漏的工具valgrind 2.2.1、可以使用友元形式进行设计 2.2.2、内部类加静态数据成员形式 2.2.3、atexit方式进行 2.2.4、pthread_once形式 作用域可以分为类作用域、类名…目录 1、全局作用域 2、类作用域 2.1、设计模式之Pimpl 2.2、单例模式的自动释放 2.2.0、检测内存泄漏的工具valgrind 2.2.1、可以使用友元形式进行设计 2.2.2、内部类加静态数据成员形式 2.2.3、atexit方式进行 2.2.4、pthread_once形式 作用域可以分为类作用域、类名的作用域以及对象的作用域几部分内容。在类中定义的成员变量和成员函数的作用域是整个类这些名称只有在类中包含类的定义部分和类外函数实现部分是可见的在类外是不可见的因此可以在不同类中使用相同的成员名。另外类作用域意味着不能从外部直接访问类的任何成员即使该成员的访问权限是public也要通过对象名来调用对于static成员函数要指定类名来调用。 如果发生“屏蔽”现象类成员的可见域将小于作用域但此时可借助this指针或“类名::”形式指明所访问的是类成员这有些类似于使用::访问全局变量。例如: #include iostream using std::cout; using std::endl; int num 1; namespace wd {int num 20;class Example{public:void print(int num) const{cout 形参num num endl;cout 数据成员num this-num endl;cout 数据成员num Example::num endl;cout 命名空间中num wd::num endl;cout 全局变量num ::num endl;}private:int num;}; }//end of namespace wdint main() {wd::Example().print(100); //通过匿名对象调用print函数return 0; } 和函数一样类的定义没有生存期的概念但类定义有作用域和可见域。使用类名创建对象时首要的前提是类名可见类名是否可见取决于类定义的可见域该可见域同样包含在其作用域中类本身可被定义在3种作用域内这也是类定义的作用域。 1、全局作用域 在函数和其他类定义的外部定义的类称为全局类绝大多数的 C 类是定义在该作用域中我们在前面定义的所有类都是在全局作用域中全局类具有全局作用域。 2、类作用域 一个类可以定义在另一类的定义中这是所谓嵌套类或者内部类举例来说如果类A定义在类B中如果A的访问权限是public则A的作用域可认为和B的作用域相同不同之处在于必须使用B::A的形式访问A的类名。当然如果A的访问权限是private则只能在类内使用类名创建该类的对象无法在外部创建A类的对象。 #includeiostream using namespace std; class Line { public:Line(int x1, int y1, int x2, int y2);void printLine() const;private:class Point{public:Point(int x 0, int y 0): _x(x), _y(y){}void print() const;private:int _x;int _y;}; private:Point _pt1;Point _pt2; }; Line::Line(int x1, int y1, int x2, int y2): _pt1(x1, y1), _pt2(x2, y2) {} void Line::printLine() const {_pt1.print();cout --- ;_pt2.print();cout endl; } void Line::Point::print() const {cout ( _x , _y ); } int main() {Line l1(1, 2, 3, 4);l1.printLine();return 0; } 注意:由于Point是私有类,不能在类外对其进行访问: 如果是正确定义的: 2.1、设计模式之Pimpl PImpl是Pointer to Implementation的缩写也被称为“编译期实现”是一种C设计的模式。 用于将类的实现细节与其公共接口分离开来。该模式的核心思想是 通过一个指向类的实现的指针来隐藏类的实现细节从而提高类的封装性和安全性。 PImpl是一种C编程技巧它将类的实现细节从对象表示中移除放到一个分离的类中并以一个不透明的指针进行访问。 此技巧用于构造拥有稳定 ABI 的 C 库接口及减少编译时依赖。 一.PImpl的好处 使用PImpl模式的好处是 可以避免对实现细节的公开从而减少了头文件中的依赖项和编译时间并且使得类的实现可以更加灵活和方便地修改而不会影响其公共接口。 在使用PImpl模式时通常需要将类的实现细节封装在一个单独的结构体或类中称为“实现类”或“pImpl类”然后通过一个指向该实现类的指针来访问实现细节。这个指针通常作为 类的私有成员变量并在类的构造函数和析构函数中进行初始化和清理。这样当类的实现细节发生变化时只需要修改实现类而不需要修改公共接口从而实现了类的高内聚低耦合的设计目标。  参考博客: 设计模式之Pimpl模式-CSDN博客https://blog.csdn.net/xhtchina/article/details/112795569?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170865960916800227465939%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257Drequest_id170865960916800227465939biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-112795569-null-null.nonecaseutm_term%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8BPimplspm1018.2226.3001.4450 2.2、单例模式的自动释放 在类和对象那一章我们看过单例模式其中对象是由_pInstance指针来保存的而在使用单例设计模式的过程中也难免会遇到内存泄漏的问题。那么是否有一个方法可以让对象自动释放而不需要程序员自己手动去释放呢在学习了嵌套类之后我们就可以完美的解决这一问题。 在涉及到自动的问题时我们很自然的可以想到当对象被销毁时会自动调用其析构函数。利用这一特性我们可以解决这一问题。 2.2.0、检测内存泄漏的工具valgrind 安装方式 $ sudo apt install valgrind使用方式: $ valgrind --toolmemcheck --leak-checkfull ./test 2.2.1、可以使用友元形式进行设计 //1、友元实现单例对象的自动释放 class AutoRelease; class Singleton {friend AutoRelease; public:static Singleton *getInstance() {if(nullptr _pInstance){_pInstance new Singleton();}return _pInstance;}static void destroy(){if(_pInstance){delete _pInstance; //1、调用析构函数 2、operator delete_pInstance nullptr;}} private:Singleton(){cout Singleton() endl;}~Singleton(){cout ~Singleton() endl;} private:static Singleton *_pInstance; }; Singleton *Singleton::_pInstance nullptr; class AutoRelease { public:AutoRelease(){cout AutoRelease() endl;}~AutoRelease(){cout ~AutoRelease() endl;if(Singleton::_pInstance){delete Singleton::_pInstance;//1、调用析构函数 2、operator deleteSingleton::_pInstance nullptr;}} }; 2.2.2、内部类加静态数据成员形式 class Singleton { public:static Singleton * getInstance(){if(_pInstance nullptr){_pInstance new Singleton();}return _pInstance;}private:class AutoRelease{public:AutoRelease(){cout AutoRelease() endl;}~AutoReleas(){cout ~AutoRelease() endl;if(_pInstance){delete _pInstance;_pInstance nullptr;}}}; private:Singleton(){cout Singleton() endl;}~Singleton(){cout ~Singleton() endl;}private:static Singleton *_pInstance;static AutoRelease  _auto; }; 2.2.3、atexit方式进行 class Singleton { public:static Singleton *getInstance(){//对于多线程环境不安全if(nullptr _pInstance){_pInstance new Singleton();atexit(destroy);}return _pInstance;}static void destroy(){if(_pInstance){delete _pInstance;//1、调用析构函数 2、operator delete_pInstance nullptr;}} private:Singleton(){cout Singleton() endl;}~Singleton(){cout ~Singleton() endl;} private:static Singleton *_pInstance; }; /* Singleton *Singleton::_pInstance nullptr; //饱汉模式(懒汉模式)*/ Singleton *Singleton::_pInstance getInstance();//饿汉模式 2.2.4、pthread_once形式 //4、pthread_once,平台相关性的函数 class Singleton { public:static Singleton *getInstance(){pthread_once(_once, init);return _pInstance; }static void init(){_pInstance new Singleton();atexit(destroy);}static void destroy(){if(_pInstance){delete _pInstance;//1、调用析构函数 2、operator delete_pInstance nullptr;}} private:Singleton(){cout Singleton() endl;}~Singleton(){cout ~Singleton() endl;} private:static Singleton *_pInstance;static pthread_once_t _once; }; Singleton *Singleton::_pInstance nullptr; //饱汉模式(懒汉模式) /* Singleton *Singleton::_pInstance getInstance();//饿汉模式 */ pthread_once_t Singleton::_once PTHREAD_ONCE_INIT;
http://www.yingshimen.cn/news/103017/

相关文章:

  • 西安优秀的定制网站建设公司哪家好wordpress关闭发表评论
  • 织梦网站图片不显示图片网站主页设计模板
  • 石材网站建设方案安徽今天的新消息
  • 淄博张店外贸建站公司互联网怎么做
  • wordpress网站重定向循环工作
  • 东莞视频网站制作厦门企业app开发
  • 做网站后台开发工资电商推广方式有哪些
  • wordpress 图片超链接专业的聊城网站优化
  • 东莞网站建电子商务能从事什么工作
  • 做盗版视频网站成本多少抖音seo怎么做
  • 焦作 网站建设网络推广属于什么专业
  • 网站推广费用入什么科目如何破解网站后台管理
  • 西安做网站的云阔怎样做网站二级页面
  • 视频网站顶部效果怎么做的网站是由哪些组成
  • 网站备案人可以改吗城市建设管理
  • 网站上qq未启用人才网站建设策划书
  • 建立网站的步骤和费用上海软件开发工程师工资一般多少
  • asp医院网站源码破解版全网vip视频网站建设
  • 网站开发框架拓扑建设银行网站信息补充
  • 苏州网站建设设计公司建设网站征集图片的通知
  • 公司网站建设开发维护工作经营范围网站开发运营
  • 品牌服装网站源码郴州吧百度贴吧
  • 网站降权怎么做免费ip地址网站
  • 做网站维护需要多少钱wordpress评论内容不显示
  • 网站建设 知乎wordpress微信登录插件
  • 低价网站建设方案百度推广账号出售
  • 重庆市建设企业诚信分查询网站熊猫代理ip破解版
  • asp.net网站开发之美杭州seo管理
  • 平面设计比较好的网站金融社区类网站建设
  • 网站建设公司成就青岛房产网上查询