1、C++基础与编程规范
规范:
1.2 在每个类声明之后、每个函数定义结束之后都要加空行
void Function1()
{
}
void Function2()
{
}
1.3
一行代码只做一件事情,如只定义一个变量,或只写一条语句
if、for、while、do 等语句自占一行,执行语句不得紧跟其后
在定义变量的同时初始化该变量
赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符
程序的分界符‘{’和‘}’应独占一行并且位于同一列
void Func1(int x, int y, int z); // 良好的风格
{
}
void Func1 (int x,int y,int z); // 不良的风格{
}
应当将修饰符 * 和 & 紧靠变量名
int *x, y;
// 此处 y 不会被误解为指针
块的注释常采用“/*...*/”
行注释 一般采用“//...”
类名和函数名用大写字母开头的单词组合而成。
变量的名字应当使用“名词”或者“形容词+名词”
变量和参数用小写字母开头的单词组合而成
常量全用大写的字母,用下划线分割单词
静态变量加前缀 s_(表示 static)
float oldValue;
float newValue;
1.1、头文件的结构
1.1.1 为了防止头文件被重复引用,应当用 ifndef/define/endif 结构产生预处 理块。
1.1.2 #include <filename.h> 格式来引用标准库的头文件
1.1.3 用 #include “filename.h” 格式来引用非标准库的头文件
1.2 if(flag) //表示flag为真 if (!flag) // 表示 flag 为假
if (flag == TRUE) if (flag == 1 ) //不良的
1.3 浮点变量与零值比较
不可将浮点变量用“==”或“!=”与任何数字比较。
if ((x>=-EPSINON) && (x<=EPSINON))
其中 EPSINON 是允许的误差(即精度)。0.00000001
1.4 指针变量与零值比较
if (p == NULL) if (p != NULL)
1.5 const 与 #define 的比较
const 的作用:只读 三种方式
const常量有数据类型,而宏常量没有数据类型
1.5 函数三种传递参数的方式
指针 引用 值传递
2 内存管理
内存分配的三种方式
静态存储区域分配 : 全局变量,static 变量
在栈上创建: 函数内局部变量的存储单元都可以在栈上创建,函
数执行结束时这些存储单元自动被释放
堆上分配,亦称动态内存分配 malloc/free new/delete 自已释放
内存常见错误
内存分配未成功,却使用了它,应该用 if(p != null)
内存分配虽然成功,但是尚未初始化就引用它
内存分配成功并且已经初始化,但操作越过了内存的边界 //类似数组
忘记了释放内存,造成内存泄露 //malloc/free new/delete 必须成对出现
释放了内存却继续使用它 //1 return 语句 2 没有将指针设置为 NULL
void getMemory(char *p)
{
p = (char *) malloc(100);
}
void test()
{
char *str = NULL;
getMemory(str);
strcpy(str, "hello");
}
char *getMemory()
{
char *p = (char *) malloc(100);
return p;
}
野指针
“野指针”不是 NULL 指针,是指向“垃圾”内存的指针
1.指针变量没有被初始化
2.指针 p 被 free 或者 delete 之后,没有置为 NULL,让人误以为 p 是个合法的指针
3 c++支持函数重载 重写
4.
A(void); // 缺省的无参数构造函数
A(const A &a); // 缺省的拷贝构造函数
~A(void); // 缺省的析构函数
A & operate =(const A &a);// 缺省的赋值函数
构造函数与析构函数的调用顺序
拷贝构造函数与赋值函数 如果用默认的, 当类中有指针变量的时候,会出现问题
可以把这两个函数设置成private
类的继承与组合
继承 是is a 的关系
组合 是has a 的关系
建议
使用 const 提高函数的健壮性
用 const 修饰函数的参数
用 const 修饰函数的返回值
分享到:
相关推荐
### C++ 学习笔记精华版 #### 一、C++ 语言概述 **1、历史背景** - **C++ 的江湖地位** - Java、C、C++、Python、C# 是当前主流的编程语言之一,而 C++ 在这些语言中以其高效性和灵活性著称。 - **C++ 之父 ...
c++学习的经验 交流c++学习经验 首先要说明的是,C和C++是两件截然不同的东西,学习C++可以完全没有C的基础,或者说可以完全不用先学C;但是,这样你是永远也不可能成为真正的C++大师的;你最多只能成为一个C++的...
想学c++的朋友可以看看,学习基础知识.《C++ Primer 中文版(第5版)》所有示例均全部采用 C++11 标准改写,这在经典升级版中极其罕见——充分体现了 C++ 语言的重大进展及其全面实践。书中丰富的教学辅助内容、醒目的...
在这个名为“c++学习源代码”的压缩包中,我们可以找到与C++学习密切相关的源代码,特别是关于数据结构的部分。数据结构是计算机科学的基础,它研究如何在内存中有效地组织和存储数据,以便于快速访问和操作。在C++...
本资源是一个为小学生提供的C++学习资料集,涵盖了C++的基本概念、programming思想、算法设计等方面的知识点。该资源包括视频集、书籍推荐、学习群推荐等多种形式的学习资源。 C++基础知识点 * C++的基本语法和...
这份"C++学习笔记"涵盖了C++的基础到高级概念,旨在帮助初学者和有一定经验的程序员深入理解并掌握C++。 在C++的学习过程中,以下几个关键知识点是不可或缺的: 1. **基础语法**:C++起源于C语言,因此它保留了...
在这个过程中,理解C++的基础语法、面向对象编程的概念、异常处理以及标准库的使用,都是非常重要的知识点。同时,不断实践和调试代码,提升解决问题的能力,也是成为一个熟练C++程序员的必经之路。
本压缩包“C++学习资料.zip”是专为高校学生和C++初学者准备的学习资源,涵盖了C++的基础知识、进阶技巧以及实际项目应用。 首先,我们来看“练习.docx”。这个文档通常包含了C++的基础语法练习题,可能涵盖变量、...
这篇文档集合提供了全面的C++学习资源,包括高清PDF格式的教程,对于初学者和进阶者都是宝贵的资料。 1. **C++基础知识**:C++是C语言的扩展,它引入了类、模板、异常处理等面向对象编程概念。学习C++首先要掌握...
"C++学习实例"这个压缩包文件正是为初学者提供了一系列精心设计的练习,旨在帮助他们逐步理解并熟练运用C++。 首先,我们要了解C++的基本概念。C++是C语言的增强版,引入了面向对象编程(OOP)的概念,包括类、对象...
通过上述知识点的学习,结合提供的"C++学习源码",开发者可以逐步精通C++在Linux/Unix环境下的编程实践,从而提升自己的编程能力。在实际项目中,这些知识将帮助开发者编写出高效、稳定且易于维护的软件。
C++学习是Android客户端目前最全面的免费离线C++学习书籍,提高C++二级考试成绩、增强C++自学能力,内容包括: 1、C++数据类型、控制语句、循环、数组等基础 2、C++逻辑算法练习题 3、C++函数、指针 4、C++内存...
从给定的文件信息中,我们可以提炼出一系列与C++学习相关的知识点,这些知识点涵盖了学习方法、资源推荐、编程实践以及个人发展等多个方面。以下是对这些知识点的详细解读: 1. **C++作为一门基础语言的重要性**:...
C++学习教程C++学习教程C++学习教程C++学习教程C++学习教程
C++知识点 XMind思维导图
### Visual C++ 学习资料知识点详解 #### 一、Visual C++ 概述 - **定义**:Visual ...以上就是根据题目要求整理的关于“Visual C++学习资料”的详细知识点,希望能对正在学习或准备学习Visual C++的朋友有所帮助。
这是 C/C++学习指南(语法篇) 对应的视频教材! 面向零基础的初学者。同时,书中还讲解了初级程序员所必须掌握的知识和技术,如“单步调试”,“编码规范”, ANSI函数库,文件操作,标准模板库STL的使用。 学习方法:...
C++课程设计:C++学习路线和课程体系; C++课程设计:C++学习路线和课程体系; C++课程设计:C++学习路线和课程体系; C++课程设计:C++学习路线和课程体系; C++课程设计:C++学习路线和课程体系; C++课程设计:...