当前位置: 首页 > 编程日记 > 正文

【C++】Google C++编码规范(一):作用域

1、文件作用域:

在.cpp文件中,C++使用匿名名字空间来表示文件作用域,C使用static来表示;

2、局部变量

局部变量在声明的同时,进行显示初始化;比起隐式初始化再赋值要高效;
局部变量的作用域要尽可能小,随用随定义,代码阅读性也更好;
比如:for (int i = 0; i < 10; ++i);
如果变量是一个对象, 每次进入作用域都要调用其构造函数, 每次退出作用域都要调用其析构函数,因此将对象的定义放到循环之外。
如,低效的实现:

for (int i = 0; i < 1000000; ++i) {Foo f; // 构造函数和析构函数分别调用 1000000次!f.DoSomething(i);
}

高效的实现:

	Foo f; // 构造函数和析构函数只调用 1 次for (int i = 0; i < 1000000; ++i) {f.DoSomething(i);}

3、静态变量和全局变量

在多线程中,静态变量和全局变量都必须是原生数据类型 (POD : Plain Old Data): 即 int, char 和 float, 以及POD 类型的指针、数组和结构体。
原因是它们的构造函数、析构函数和初始化的顺序在 C++ 中是不确定的,甚至随着
构建变化而变化,导致难以发现的 bug。
我们只允许 POD 类型的静态变量,即完全禁用 vector (使用 C 数组替代) 和 string (使用 const char []代替)。

相关文章:

华为 | 人生苦短,码短情长,有场大Party等你来Pick!

上学时&#xff0c;书上说C语言是上帝的语言。我同屋的兄弟不服&#xff0c;他说PHP才是最好的语言。毕业之后&#xff0c;我们Team的老大却坚信&#xff1a;Life is short&#xff0c;只用Python……现在&#xff0c;作为一个真正的开发者&#xff0c;我发现用什么语言一点点都…

设置进程优先级

//取得本进程id HANDLE hProcess GetCurrentProcess(); //设置本进程的优先级 int stat SetPriorityClass(hProcess, NORMAL_PRIORITY_CLASS);

Deep Reading | 从0到1再读注意力机制,此文必收藏!

译者 | forencegan编辑 | 琥珀出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【AI科技大本营导语】注意力机制&#xff08;Attention&#xff09;已经成为深度学习必学内容之一&#xff0c;无论是计算机视觉还是自然语言处理都可以看到各种各样注意力机制的方法。之…

【C++】Google C++编码规范(二):类

1、构造函数 不要在构造函数中进行复杂的初始化 (尤其是那些有可能失败或者需要调用虚函数的初始化). 构造函数不得调用虚函数, 或尝试报告一个非致命错误. 如果对象需要进行有意义的 初始化, 考虑使用明确的 Init() 方法或使用工厂模式. 2、初始化 第一种方法&#xff1a;构…

Flask与Django对比

Flask与Django对比 Django vs FlaskFlask框架之间的差别 Django功能大而全&#xff0c;Flask只包含基本的配置 Django的一站式解决的思路&#xff0c;能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板&#xff0c;表单&#xff0c;路由&#xff0c…

windows下apache配置虚拟主机的两个方法

windows下apache配置虚拟主机方法一&#xff1a; 对httpd.conf进行设置&#xff1a;1.注释以下三行#ServerAdmin#ServerName#DocumentRoot2&#xff0e;去掉mod_proxy.so和mod_proxy_ajp.so的注释3&#xff0e;#Virtual hosts#Include conf/extra/httpd-vhosts.conf &#xff0…

大疆、港科大联手!双目3D目标检测实验效果大放送 | CVPR 2019

作者 | heryms责编 | JaneCVPR 2019的文章出来了&#xff0c;今天聊聊双目的 3D object detection。这是一篇来自 DJI &#xff08;大疆&#xff09;与港科大合作的文章《Stereo R-CNN based 3D Object Detection for Autonomous Driving》&#xff0c;作者分别是 Peiliang Li&…

【C++】Google C++编码规范(三):智能指针

【C】Google C编码规范&#xff08;一&#xff09;&#xff1a;作用域 【C】Google C编码规范&#xff08;二&#xff09;&#xff1a;类 std::unique_ptr std::unique_ptr是C11标准里新推出的智能指针&#xff0c;用来表示动态分配出的对象的「独一无二」所有权&#xff1b…

Django restful-framework初步学习

urls.py from django.conf.urls import include, url from django.contrib import admin from rest_framework import routers # 导入api路由 from app01 import apirouter routers.DefaultRouter() # 获取api路由对象 router.register(rusers, api.UserViewSet) # 注册路由到…

植树节,程序员要爬哪些“树”?

作者 | 程序猿小吴、进击的Hello_World转载自五分钟学算法&#xff08;ID: CXYxiaowu&#xff09;公历 3 月 12 日是一年一度的植树节。旨在宣传保护森林&#xff0c;并动员群众参加植树造林活动。说到树&#xff0c;程序猿们肯定不陌生&#xff0c;趁着这个植树节&#xff0c;…

把JS 脚本嵌入CS运行

下面这段视频&#xff0c;是让您知道怎样把播放器的javascript放入C#类别中。在调用这个类别时&#xff0c;只传入相关的参数&#xff0c;即可运行。一时类别封装了&#xff0c;在前台xxx.aspx或xxx.aspx.cs看不到播放器的代码。 另一个就是在CS内怎样运行Javascript脚本。此工…

【C++】Google C++编码规范(四):其他C++

引用参数 所有按引用传递的参数必须加上const; 这在Google Code上是一个硬性约定&#xff1a;输入参数是值参或const的引用参数&#xff0c;输出参数为指针&#xff0c;输入参数可以是const指针&#xff0c;但决不能是非const的引用参数&#xff0c;除非用于交换&#xff0c;比…

使用Ceph集群作为Kubernetes的动态分配持久化存储

2019独角兽企业重金招聘Python工程师标准>>> 使用Docker快速部署Ceph集群 &#xff0c; 然后使用这个Ceph集群作为Kubernetes的动态分配持久化存储。 Kubernetes集群要使用Ceph集群需要在每个Kubernetes节点上安装ceph-common 1. 为kubernetes创建一个存储池 1 2 #…

Cosmos的基石:IL2CPU编译器--.net/C#开源操作系统学习系列三

本文的代码包以cosmos-12304.zip为例&#xff08;从这个包开始&#xff0c;COSMOS的内核算是有了个基本的雏形&#xff0c;就像是一颗大树在出芽前会先长出庞大的根系&#xff0c;现在就要破土长出第一颗芽了&#xff09; IL2CPU之于COSMOS就相当与GCC之于LINUX&#xff0c;查看…

【面试 多线程】【第九篇】多线程的问题

1.多线程有什么用 发挥多核CPU优势&#xff0c;防止阻塞&#xff0c;更快的处理数据 2.多线程的实现方式有哪几种&#xff0c;分别的特点优势是什么样的 1》继承Thread类&#xff0c;重写run方法&#xff0c;start启动多线程 2》实现Runnable接口&#xff0c;重写run方法&…

那个大战AlphaGo的柯洁,将免试入读清华大学工商管理专业

日前&#xff0c;柯洁将免试入读清华大学的消息经媒体曝光了出来。《2019 年优秀运动员免试入学推荐名单》3 月 10 日开始公示&#xff0c;围棋世界冠军柯洁的名字出现在名单上&#xff0c;其中表明他将就读清华大学工商管理类专业。据了解&#xff0c;柯洁预计今年下半年入学清…

【Qt】设置背景

1、使用样式表qss设置背景 QDialog 设置背景图片: dlg->setStyleSheet("QDialog{border-image: url(://test.png);}"); 设置背景颜色: dlg->setStyleSheet("QDialog{background-color: red;}"); QWidget 设置背景图片: wgt->setStyleSheet…

基于Hadoop的MapReduce框架研究报告

http://www.doc88.com/p-19830708273.html

【Qt】设置窗口透明度

1、使用setWindowOpacity设置透明度 setWindowOpacity(0.5); 设置完成会使窗体、标题栏、子控件都透明 2、使用样式表qss设置窗体透明 dlg->setStyleSheet("QDialog{background-color: rgba(255, 0, 0, 0.5);}");wgt->setStyleSheet("QWidget{backgrou…

7行Python代码,搭建可以识花的机器学习App|视频教程

你想学Python&#xff0c;却不知如何着手&#xff0c;那你需要一种更加有趣的学习方式。Siraj Raval是一位人工智能领域的编程高手&#xff0c;毕业于哥伦比亚大学&#xff0c;曾任职于 Twilio 和 Meetup&#xff0c;他通过制作教程类短视频的方式在Youtube上积累了大量的粉丝&…

java中缀表达式转后缀表达式(逆波兰算法)

四则运算是栈的重要应用之一 中缀表达式转后缀表达式&#xff08;逆波兰算法&#xff09;过程 从左到右遍历中缀表达式数字直接输出为后缀表达式一部分如果是符号&#xff0c;则判断与栈顶元素的优先级高于栈顶元素优先级直接入栈低于或等于栈顶优先级栈顶元素出栈并输出为后缀…

Wpf消息循环之消息传递

几天遇见一个问题需要检查某个wpf程序是否已经运行&#xff0c;如果没有运行则启动传递参数&#xff0c;如果已运行则需要直接传递消息。在没有运行 情况下传递参数很简单&#xff0c;我们只需要Process cmd窗口启动并传递参数&#xff0c;在程序中处理。但是如果程序已经启动有…

【Qt】使用sqlite3数据库时,主键自增和获取自增后的主键的

创建数据表格&#xff0c;设置主键自增 创建数据库时&#xff0c;启用主键自增加特性 Create table testTable (id INTEGER PRIMARY KEY AUTOINCREMENT,。。。。 注意事项&#xff1a;设置主键自增时&#xff08;AUTOINCREMENT&#xff09;&#xff0c;主键类型必须是INTEGER&…

拿下斯坦福和剑桥双offer,00后的算法学习之路

董文馨&#xff0c;00后&#xff0c;精通英语&#xff0c;西班牙语。斯坦福大学计算机系和剑桥大学双Offer&#xff0c;秋季将进入斯坦福大学学习。10岁开始在国外上学&#xff1b;12岁学Scratch&#xff1b;13岁学HTML & CSS&#xff1b;14岁开始学Python & Java&…

Mybatis【配置文件】就是这么简单

配置文件和映射文件还有挺多的属性我还没有讲的&#xff0c;现在就把它们一一补全 映射文件 在mapper.xml文件中配置很多的sql语句&#xff0c;执行每个sql语句时&#xff0c;封装为MappedStatement对象&#xff0c;mapper.xml以statement为单位管理sql语句 Statement的实际位置…

cto denalil

Denali使用准虚拟化技术来提高x86电脑上虚拟机的性能。Denali的虚拟机为因特网服务专门支持了最小化的操作系统。 系统可以运行上千虚拟机。Xen与Denali不同&#xff0c;因为它试图运行适当数量的完整操作系统&#xff0c;而非大量轻量级操作系统。转载于:https://blog.51cto.c…

Redis学习笔记 - 数据类型与API(1)Key

Redis学习笔记 - 数据类型与API&#xff08;1&#xff09;Key Key相关命令 1. 常用命令 命令含义时间复杂度keys查找所有符合给定模式 pattern 的 keyO(N)&#xff0c; N 为数据库中 key 的数量dbsize计算key的总数O(1)exists检查key是否存在O(1)del删除指定的key-valueO(1)exp…

【Qt】enum和QString的相互

使用Q_ENUM注册enum Q_ENUM使用元对象系统meta-object来注册,因此在enum所在的类中必须包含宏Q_OBJECT或者Q_GADGET。 例子如下 class MyClass : public QObject{Q_OBJECTpublic:MyClass(QObject *parent = 0);~MyClass();enum Priority { High, Low, VeryHigh, VeryLow };Q_…

Gmail全球大规模宕机

整理 | 非主流出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;今天&#xff08;3 月 13 日&#xff09;&#xff0c;Google 的多项服务在全球范围内出现了不同程度的宕机&#xff0c;包括 Gmail、Google Drive、 Hangouts、谷歌地图等。受影响最大的是拥有超 10 亿用…

搭建域控服务器

作业环境 服务器端(VirtualBox VM) 操作系统&#xff1a;Windows Server 2003 Enterprise Edition SP2 IPAddress&#xff1a;192.168.1.1/255.255.255.0 Gateway&#xff1a;null 客户端(VirtualBox VM) 操作系统&#xff1a;Windows XP SP3 IPAddress&#xff1a;192.168.1.2…