如何成为一名C++程序员
入门: 入门就是要初步对编程的思想有个了解,并且能编程解决一些小问题。入门一定要选好书,难度如果太低了会造成对读者的误导,以为编程就是这么回事;也不能太高深,免的打击读者的信心。既然编程的入门要求是编一些小程序解决小问题,那么就没必要直接学习C++,我觉得循环、判断、跳转、指针才是最基本的编程思想,学通了这些对以后学习C++很有帮助。 我建议应该先把C扎实地学好,不光要掌握C的语法,因为学习编程的最终目的是解决实际问题,所以还要适当掌握把实际问题与编程联系在一起的能力,我推荐《 C程序设计语言(第2版)...
C++引用计数的智能指针有效回收方法
怎样从灾难性故障中,恢复一个长期运行、系统级的后台守护进程或者服务,在如今的软件设计过程中,已成为了一个重要的考虑因素。当这些软件是由C++语言编成,并使用了引用计数的智能指针时,那么,智能指针的有效回收,对系统是否具有可伸缩级的恢复能力、甚至正确地继续未完成的操作来说,都显得至关重要。 在本文中,描述了一种方法,可从关机之后的软件恢复中,有效地回收引用计数指针,而且此方法在内存占用方面也非常高效,这种方法的关键在于避免对象复制,而对象复制通常是由C++中指针引用的串行化与反串行化这种传统技术产生的。当...
C++:memset ,memcpy 和strcpy 的根本区别?
#include "memory.h" memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’;例:char a[100];memset(a, '\0', sizeof(a));memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),会造成b的内存地址溢出。 strcpy就只能拷贝字符串了,它遇到'\0'就结束拷贝...
C++项目开发之编写项目计划书
根据《GB8567-88计算机软件产品开发文件编制指南》中的项目开发计划要求,结合单位实际情况,设计项目计划书如下。 1.引言 编写目的 为了保证项目开发人员按时保质地完成预订目标,更好地了解项目实际情况,按照合理的顺序开展工作,现以书面的形式将项目开发生命周期中的项目任务范围、项目团队组织结构、团队成员的工作责任、团队内外沟通协作方式、开发进度、检查项目工作等内容描述出来,作为项目相关人员之间的共识和约定以及项目生命周期内的所有项目活动的行动基...
基础篇:C++异常和错误处理经验之谈
代替 try / catch / throw 的通常做法是返回一个返回代码(有时称为错误代码),例如,printf(), scanf() 和 malloc()就是这样工作的:调用者通过if等语句来测试返回值判断函数是否成功。 尽管返回代码技术有时是最适当的错误处理技术,但会增加不必要的if语句这样的令人讨厌的效果。 质量降级:众所周知,条件语句可能包含的错误大约十倍于其他类型的语句。因此,在其他都相同时,如果你能从代码中消除条件语句,你会得到更健壮的代码。 推迟面市:由于条件语句是分支点,而它们关系到白...
位运算符按位与小议
1.位运算是对整型数据的运算(可以操作到位) 2.符号位参与运算3.主要用于系统程序设计 位运算符共有6 种:它们是:按位与() 按位或(|) 按位异或(^) 按位取反(~) 左移() 右移() 举例:按位“与” 例如:已知:char a=3, b=-2 , c ;求: c = a b ; 下面是我的求解过程。 1.分别求出3、-2的2进制。3的是11,2的……111111111111111110,各保留八位,从右到左,不够的0填充。 2.这样代码会是这样。 a 0000 0011 b 1111 111...
C/C++中多维数组指针作为函数参数传递
注意此题的意思在于输入3个同4门课的成绩,计算出平均值和显示其中一个同学的4门课成绩,此例是对多维数组指针和多维数组的指针作为涵数参数传递的总结,认真联系和体会可以很好的了解多维数组指针的概念到底是什么! #include stdio.h main() { void search_score(); /* 定义自定义涵数类型为不返回型 */ void count_avg(); /* 定义自定义涵数类型为不返回型 */ static float a[3][4]={{97,45.5,66,77},{88,92....
C++语言的VxD与外界通讯的所有接口
一。什么是VxD? 从多任务操作系统Windows 3.1起,计算机中的任一物理设备x可同时被基于Dos或Windows的多个进程使用,这种一对多的关系称为"设备虚拟化",各进程通过运行在核心层的VxD(虚拟x设备驱动程序)存取物理设备x.操作系统提供给用户的软件服务也可以用VxD实现。计算机中的其它资源,如CPU,内存等也可同时被多个进程使用,各进程在系统提供的虚拟机(VM)环境下存取这类资源。 VxD可由虚拟机管理器(VMM)在开机时装入核心层(称静态装入,即置VxD于c:\windows\syst...
C++对象布局及多态实现之带虚函数的类
如果类中存在虚函数时,情况会怎样呢?我们知道当一个类中有虚函数时,编译器会为该类产生一个虚函数表,并在它的每一个对象中插入一个指向该虚函数表的指针,通常这个指针是插在对象的起始位置。所谓的虚函数表实际就是一个指针数组,其中的指针指向真正的函数起始地址。我们来验证一下,定义一个无成员变量的类C040,内含一个虚函数。 struct C040 { virtual void foo() {} }; 运行如下代码打印它的大小及对象中的内容。 PRINT_SIZE_DETAIL(C040) 结果为: The siz...
C++中的函数调用面试题
最近参加了一个笔试,有这样一道题,大致如下。 问下面程序的四个函数中,哪些可以输出"Hello"? Cpp代码 #include "iostream.h" void S1(char *s) { s = "Hello"; } void S2(char *s) { s = "Hello"; } void S3(char *s) { s = "Hello"; } void S4(char **s) { *s = "Hello"; } void main() { char *str = "Bye"; S1(st...
C++中结构体的的慨念和使用方法
什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。 定义结构体使用struct修饰符,例如: c++ 代码 struct te...
C++中使用const对象引用做形参
在C++中可以传对象引用,比用指针方便,但是为了避免在函数中对象被修改,需要加const限定符,相应的,在实现对象的成员函数时,也要添加cosnt,这样,因为只有cosnt成员函数才能被const对象调用 注意下面的函数test,里面调用了类A的get_name和get_path,所以get_name和get_path必须是const的,而get_path1不需要是const的 #includestring.h #includestring #includeiostream usingnamespace...