如何让 C++ 和 C# 一样易用,而且效率更高?

(未完成,待续。。)

第一章:C++基本功

1. 养成良好的编码习惯。

2. 堆上的资源随用随还,严格控制生命周期。

 

第二章:一些调试心得

1. 在VisualStudio环境下,曾出现 Detected memory leaks!,调试很久,有如下心得:

a. 可以逐步简化程序,确认问题点,同时使用 _CrtSetBreakAlloc(x) 辅助查找问题。

b. 使用 Borland 公司开发的 DevPartner,比较强大。

 

2. 一处 class 继承 后的问题。

在 C#中,几乎不用担心内存问题,而C++中则有些区别。

 1 class A
 2 {
 3 protected:
 4     int * p1;
 5 };
 6 
 7 class A1 : class A
 8 {
 9     A1()
10     {
11         p1 = new int[10];
12     }
13     ~A1()
14     {
15         delete [] p1;
16     }
17 };

以上代码,可能会报 内存泄露的错误。比如按以下方式调用:

1 A * a = new A1();
2 delete a;

实际析构方式是: ~A(), 就截至了,并没有调用 ~A1()。 这导致内存泄露。

所以:int * p1 是基类的成员,就应该有基类来释放。子类想使用可以,但是仅限于使用,不能拥有(即:构造、析构都不应该由它来管理)。

修改后的代码如下:

class A
{
protected:int *     m_p1;public:A(int p1_count){m_p1 = new int[p1_count];}~A(){delete [] p1;}
};class A1 : class A
{A1() : A(10){}~A1(){}
};

 

转载于:https://www.cnblogs.com/robnetcn/p/5962925.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 51cto 数据类型_Mysql支持的数据类型

一.数值类型Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的&#xff0c…

XP操作系统最优视觉效果

想让系统运行得快,又不想桌面弄得像2000似的,哪应该怎么做能? 右击我的电脑——属性 点击高级选项夹——点性能中的设置按钮 在视觉效果选项夹里点调整为最佳性能(此时如果确定的话就跟2000的界面一样了) 再在“在窗口…

【JZOJ4819】【NOIP2016提高A组模拟10.15】算循环

题目描述 输入 输出 样例输入 167 198 样例输出 906462341 数据范围 解法 令f(n)∑ni1i,g(n)∑ni1i2 易得ans∑ni1∑mj1f(n−i1)∗f(m−j1) 等价于ans∑ni1∑mj1f(i)∗f(j) 显然f(n)n∗(n−1)/2; 拆开得ans14∑ni1∑mj1i∗(i1)∗j∗(j1) 再得ans14∑…

vb装入系统启动项

装入系统启动项 Dim WshShell Set WshShell CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\shi", "d:\shi.exe /start", "REG_SZ"

mysql key value 引擎_mysql集成的key-value引擎-个人翻译

正如上文提到的,我们只是释放出了一个技术预览版。此功能目前只是mysql的一个插件,使用memcached协议。If you would just like to get a brief introduction on thesetup steps, there is a “README-innodb_memcached” in themysql-5.6.2-labs-innodb…

运行命令全集

winver 检查Windows版本wmimgmt.msc 打开windows管理体系结构wupdmgr windows更新程序winver 检查Windows版本wmimgmt.msc 打开windows管理体系结构wupdmgr windows更新程序wwww windows脚本宿主设置write 写字板winmsd 系统信息wiaacmgr 扫描仪和照相机向导wi…

端口详解大全

端口:0 服务:Reserved 说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,使用IP地址为0.0.0.0,设置A…

mysql binlog 恢复指定表_Mysql用全备恢复指定表mysqlbinlog抽取某个表的信息

Mysql恢复到指定表2009年05月27日 作者: 大头刚一、从全备中提取某一个表的信息,并进行恢复恢复使用Mysqldump工具备份的数据,有个不方便的地方,就是在恢复的时候不能指定恢复到表,例如我备份了整个数据库&#xff0c…

Hyperledger中数据存取的实现

简介 本文介绍了在Hyperledger中数据存取的实现. API接口 Hyperledger提供基于key/value的数据存储,其中key是字符串,value则是二进制字节数组,Hyperledger的Go API提供了三个方法用于数据存取:PutState(key, value&am…

计算机基本操作术语

操作系统 计算机硬件系统外面加载的第一道软件系统,专门用于管理计算机硬件和其它软件,响应用户对硬件和软件的操作,在微机上常见的有DOS、Windows3.2,Win95/98/NT等。 安装程序 由于目前的软件都涉及许多文件和子目录,所以一般都提供安装程序帮助用户自…

mysql 4 中文模糊查询_解决MySQL中文模糊查询问题

解决MySQL中文模糊查询问题:我们在MySQL中进行中文模糊查询时,经常会返回一些与之不相关的记录,比如查找 "%a%" 时,返回的可能有中文字符,却没有 a 字符存在。对于此问题目前发现一种方法可以很方便解决。例…

《信息安全系统设计基础》 第五周学习总结

20145224 《信息安全系统设计基础》第五周学习总结 教材学习内容总结 3.1 历史观点 X86寻址的三个时代: 1、DOS时代的平坦模式,不区分用户空间和内核空间,很不安全; 2、8086的分段模式; 3、IA32的带保护模式的平坦模式…

中文版php.ini

;;;;;;;;;;;; ;; 语法 ;; ;;;;;;;;;;;; ; 该文件的语法非常简单。空白字符和以分号开始的行被简单地忽略。 ; 章节标题(例如: [php])也被简单地忽略,即使将来它们可能有某种意义。 ; ; 设置指令的格式如下: ; directive value ; 指令名(directive)是大小…

使用轻量级Spring @Scheduled注解执行定时任务

WEB项目中需要加入一个定时执行任务,可以使用Quartz来实现,由于项目就一个定时任务,所以想简单点,不用去配置那些Quartz的配置文件,所以就采用了Spring Scheduled注解来实现了定时任务。在这里做个备注。 spring配置文…

mysql 表名通配符导出_mysqldump根据通配符批量导出

xtrabackup的主要优点:1,物理备份,备份速度快2,热备份、无需停机3,恢复速度快4.自动会对备份文件进行验证1. xtrabackup 工具的安装1.1 安装依赖包#No package perl-Digest-MD5 available.yum install -y rsync perl l perl-Digest-MD5 perl perl-devel …

系统垃圾清理.cmd

将以下内容保存为“系统垃圾清理.cmd”文件,运行即可 echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemdrive%\*.log del /f /s /q %systemdrive%\*.gid del …

Android内存优化(使用SparseArray和ArrayMap代替HashMap)

出处:Sunzxyong HashMap HashMap内部是使用一个默认容量为16的数组来存储数据的,而数组中每一个元素却又是一个链表的头结点,所以,更准确的来说,HashMap内部存储结构是使用哈希表的拉链结构(数组链表&#…

mysql按日期获取最新_mysql获取按日期排序获取最新的记录

主要按照日期获得最新的数据;今天记录两种方式,并不涉及效率等其他方面问题:第一种, 利用GROUP BY原理:select * from (select * from authenticationrecord order by authenticationtime desc) temp group by merchan…

vbs运算符号和函数

基本运算 数字加法及字符串连接 - 数字减法 * 数字乘法 / 数字除法 Mod 求余数 \ 求商数 & 字符串连接 ^ 次方 相等 <> 不相等 > 大于或等于 > 大于 < 小于或等于 < 小于 Not 非 And 且 Or 或 Xor 异或 循环及决策 if ....then 若…