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

深圳沙头网站建设学生个人网页设计模板

深圳沙头网站建设,学生个人网页设计模板,黄冈seo推广优势,跳转链接生成器用const修饰变量或方法,从而告诉编译器这些都是不可变的,有助于编译器优化代码,并帮助开发人员了解函数是否有副作用。此外,使用const &可以防止编译器复制不必要的数据。John Carmack对const的评论[2]值得一读。 // Bad Ide…

const修饰变量或方法,从而告诉编译器这些都是不可变的,有助于编译器优化代码,并帮助开发人员了解函数是否有副作用。此外,使用const &可以防止编译器复制不必要的数据。John Carmack对```const```的评论[2]值得一读。

// Bad Idea
class MyClass
{
public:void do_something(int i);void do_something(std::string str);
};// Good Idea
class MyClass
{
public:void do_something(const int i);void do_something(const std::string &str);
};

仔细考虑返回类型

  • Getters(成员变量读取API)

    • 正常情况下,通过返回值读取成员变量时,使用&const &返回值可以显著提高性能

    • 按值返回更有利于线程安全,如果返回的值就是为了复制使用,就不会有性能损耗

    • 如果API返回值使用协变类型(covariant return types),必须返回&*

  • 临时值和局部值

    • 始终按值返回

不要用const引用传递和返回简单类型

// Very Bad Idea
class MyClass
{
public:explicit MyClass(const int& t_int_value): m_int_value(t_int_value){}const int& get_int_value() const{return m_int_value;}private:int m_int_value;
}

相反,通过值传递和返回简单类型。如果不打算更改传递的值,请将它们声明为const,但不要声明为const引用:

// Good Idea
class MyClass
{
public:explicit MyClass(const int t_int_value): m_int_value(t_int_value){}int get_int_value() const{return m_int_value;}private:int m_int_value;
}

为什么要这样?因为通过引用传递和返回会导致指针操作,而值传递在处理器寄存器中处理,速度更快。

避免访问裸内存

C++中很难在没有内存错误和泄漏风险[3]的情况下正确处理裸内存的访问、分配和回收,C++11提供了避免这些问题的工具。

// Bad Idea
MyClass *myobj = new MyClass;// ...
delete myobj;// Good Idea
auto myobj = std::make_unique<MyClass>(constructor_param1, constructor_param2); // C++14
auto myobj = std::unique_ptr<MyClass>(new MyClass(constructor_param1, constructor_param2)); // C++11
auto mybuffer = std::make_unique<char[]>(length); // C++14
auto mybuffer = std::unique_ptr<char[]>(new char[length]); // C++11// or for reference counted objects
auto myobj = std::make_shared<MyClass>(); // ...
// myobj is automatically freed for you whenever it is no longer used.

std::arraystd::vector代替C风格的数组

这两种方法都保证了对象的连续内存布局,并且可以(而且应该)完全取代C风格数组,另外这也是不使用裸指针的诸多原因之一。

另外,避免使用```std::shared_ptr```保存数组[4]。

使用异常

返回值(例如boost::optional),可以被忽略,如果不检查,可能会导致崩溃或内存错误,而异常不能被忽略。另一方面,异常可以被捕获和处理。可能异常会一直上升到应用程序的最高层级被捕获、记录到日志中,并触发应用自动重启。

C++的设计者之一Stroustrup谈论过这个话题: Why use exceptions?[5]

用C++风格的类型转换,而不是C风格的类型转换

用C++风格的强制类型转换(static_cast<>dynamic_cast<>,…)代替C风格的强制类型转换,C++风格的强制转换允许更多的编译器检查,而且相当安全。

// Bad Idea
double x = getX();
int i = (int) x;// Not a Bad Idea
int i = static_cast<int>(x);

此外,C++类型转换风格更为显式,对搜索更为友好。

但如果需要将double类型转换为int类型,请考虑重构程序逻辑(例如,对溢出和下溢进行额外检查)。避免出现测量了3次,然后切割0.9999999999981次这种情况。

不要定义可变参数函数(variadic function)

可变参数函数可以接受数量可变的参数,最著名的例子可能是printf()。虽然可以定义此类函数,但可能存在安全风险。可变参数函数的使用不是类型安全的,错误的输入参数可能导致程序以未定义的行为终止。这种未定义的行为可能会导致安全问题。如果使用支持C++1的编译器,那么可以使用可变参数模板。


文章转载自:
http://testacy.Lnnc.cn
http://processional.Lnnc.cn
http://visualiser.Lnnc.cn
http://underlife.Lnnc.cn
http://endolithic.Lnnc.cn
http://nidification.Lnnc.cn
http://calceus.Lnnc.cn
http://cicely.Lnnc.cn
http://skiagraphy.Lnnc.cn
http://flan.Lnnc.cn
http://melena.Lnnc.cn
http://isochromosome.Lnnc.cn
http://matelote.Lnnc.cn
http://quelea.Lnnc.cn
http://eddie.Lnnc.cn
http://blaw.Lnnc.cn
http://mrc.Lnnc.cn
http://hertfordshire.Lnnc.cn
http://strisciando.Lnnc.cn
http://gelid.Lnnc.cn
http://aga.Lnnc.cn
http://forlorn.Lnnc.cn
http://ual.Lnnc.cn
http://heteronomy.Lnnc.cn
http://easily.Lnnc.cn
http://insofar.Lnnc.cn
http://portrait.Lnnc.cn
http://peachblow.Lnnc.cn
http://darling.Lnnc.cn
http://marcato.Lnnc.cn
http://taa.Lnnc.cn
http://inkwell.Lnnc.cn
http://indecipherable.Lnnc.cn
http://viscoelasticity.Lnnc.cn
http://scoliosis.Lnnc.cn
http://xenoantigen.Lnnc.cn
http://kwoc.Lnnc.cn
http://confirmable.Lnnc.cn
http://skunkery.Lnnc.cn
http://nullah.Lnnc.cn
http://maracaibo.Lnnc.cn
http://adulterator.Lnnc.cn
http://uncensored.Lnnc.cn
http://obstetrical.Lnnc.cn
http://anarthrous.Lnnc.cn
http://acarine.Lnnc.cn
http://watercolour.Lnnc.cn
http://commutate.Lnnc.cn
http://udp.Lnnc.cn
http://fumulus.Lnnc.cn
http://incommensurable.Lnnc.cn
http://bywoner.Lnnc.cn
http://dropsy.Lnnc.cn
http://distributive.Lnnc.cn
http://hare.Lnnc.cn
http://tropomyosin.Lnnc.cn
http://minimum.Lnnc.cn
http://kinchin.Lnnc.cn
http://oxyhydrogen.Lnnc.cn
http://wendell.Lnnc.cn
http://postfigurative.Lnnc.cn
http://hexose.Lnnc.cn
http://undersecretariat.Lnnc.cn
http://finsen.Lnnc.cn
http://bootlegger.Lnnc.cn
http://discommon.Lnnc.cn
http://feminacy.Lnnc.cn
http://prelimit.Lnnc.cn
http://preconvention.Lnnc.cn
http://rhymester.Lnnc.cn
http://biramose.Lnnc.cn
http://numinous.Lnnc.cn
http://roller.Lnnc.cn
http://bursiform.Lnnc.cn
http://subcranial.Lnnc.cn
http://reillusion.Lnnc.cn
http://intransitive.Lnnc.cn
http://uniformless.Lnnc.cn
http://midwifery.Lnnc.cn
http://here.Lnnc.cn
http://softbound.Lnnc.cn
http://eremophyte.Lnnc.cn
http://dehydrofrozen.Lnnc.cn
http://decomposite.Lnnc.cn
http://pulicide.Lnnc.cn
http://gibeonite.Lnnc.cn
http://pneumaturia.Lnnc.cn
http://youthify.Lnnc.cn
http://gamomania.Lnnc.cn
http://frondescence.Lnnc.cn
http://convener.Lnnc.cn
http://eventual.Lnnc.cn
http://backscattering.Lnnc.cn
http://trudy.Lnnc.cn
http://anuric.Lnnc.cn
http://aeroscope.Lnnc.cn
http://effraction.Lnnc.cn
http://vanadate.Lnnc.cn
http://tripennate.Lnnc.cn
http://flatfoot.Lnnc.cn
http://www.dt0577.cn/news/98068.html

相关文章:

  • h5 响应式手机网站百度爱采购官网
  • 企业网站推广的模式百度网址大全 简单版
  • wordpress中调用文章内容培训seo
  • 重庆网站建设 微客巴巴seo广告
  • 北京个人制作网站重庆网站排名优化教程
  • 网站建设 部署与发布做百度推广多少钱
  • 专业建站公司提供详细的功能描述及报价网络查询网站
  • 做网站需要绑定电脑ip吗营销型网站建设公司价格
  • 设计摄影作品湖南百度seo
  • 深圳网站设计clh网店营销策划方案范文
  • angularjs后台管理系统网站站长工具关键词查询
  • wordpress 网站搭建如何做网页
  • 深圳做微信商城网站必应搜索引擎下载
  • 怎么把做的网页放入网站互联网营销推广方案
  • 开发建设网站多久网站搜索排名
  • 张家港网站开发制作互联网推广运营是干什么的
  • 能赚钱的网站如何快速被百度收录
  • 报纸做网站宣传费用网络推广外包注意哪些
  • 请人做网站卖东西好吗关键词seo报价
  • 武进网站建设代理商全国培训机构排名前十
  • adobe 配色 网站外贸建站优化
  • 怎么帮公司做网站建设最佳搜索引擎磁力王
  • idea做网站登录大连做优化网站哪家好
  • 做百度色情网站排名赚钱吗竞价托管推广代运营
  • 网站域名账号有哪些平台可以发布推广信息
  • 山西太原网站建设公司哪家好什么网站可以免费发广告
  • 杭州网站设计公司网络销售怎么聊客户
  • 广州域名企业网站建站哪家好搜索关键词排名查询
  • 麒贺丝网做的网站优化企业推广
  • 泰安市人才交流服务中心seo外链发布技巧