C++ 重要概念

C++重要概念

深入研究C++,特别是C++程序在内存中的分配及运行机制.

以下是自己认为比较重要的一些C++中必须理解和牢记在心的概念:

1.没有return语句的函数在结尾处将自动返回void类型.
2.C++中最简单而在MFC中应用最多的
typedef unsigned short int USHORT;
#define id 15和const unsigened short id=15;都定义了一个常量,但后者在运行时定义,且具有类型说明.
3.枚举常量名是一个新类型(可作为类型定义符及函数返回类型);每个符号常量都取一个整数值.
例如:enum COLOR{RED,BLUE,WHITE};
cout<<BLUE;//输出的是BLUE的整数值"1".
4.变量作用域位于{}之间.例如:
int main(){
int a=10;
cout<<a;//输出10
{
int a=5;
cout<<a;//输出5
}
cout<<a;//输出10
5.如果函数的某形参有缺省值,则其后面的所有形参都必须有缺省值.这样的理解也许必书上"如果任何一个形参没有缺省值,那么在它之前的形参都不能有缺省值"更容易理解
6.仅仅返回值类型不同的函数不能被重载.
*看C++时间长了,发觉所有的C++大师也是语言大师或者逻辑大师.有时侯,你必须反复斟酌"大师"们关于某个概念的阐述,最终把它变成你自己"通俗",自己能懂的说明.
7.什么是"私有成员"?我看了十几遍,最后一遍才明白,所谓私有,是指该成员只能被类本身的方法访问----即使是这个类的对象也不能直接访问.
**重要体会:过去学一种新语言,走马观花,感觉差不多就可以动手了,这种方法对C++来说不行,如果感觉C++行了,进入VC++绝对会打道回府.
8.类的对象所占用的空间是其成员变量所用内存的总和(可sizeof求证),对象指针指向其首个成员变量地址.对象的函数不占用对象的内存空间(即使函数中有局部变量)
9.const关键字的主要作用是利用编译程序进行排错.和限制对成员的改变.
表现在以下方面:
(1)const成员函数:const位于形参括号之后,分号之前.该函数不能修改成员变量.
(2)const类:对一个类说明使用了const,实际上是说明了一个const型的this指针,该指针只能调用const成员函数.
(3)const成员变量:==常量
(4)const指针.
int * const pi=0;//指针pi不能再指向其他对象(不允许pi=&x)
const int * pi=0;//指针不能改变所指向地址中的内容(不允许*pi=x);
const int * const pi=0;//指向常量的常量指针.
10.一定要对所有的指针进行初始化,初始化可以是有效的变量地址,也可以是0(空指针).
   一定要对所有引用的说明进行初始化,引用不能为空,也不能被重新赋值.
必须牢记:引用不等于指针,引用是目标的"别名".对引用的操作(包括赋值和&)都是对目标进行的.
*一个没有初始化的指针被称为"失控指针",是非常危险的.
11.指针用于:
A:处理自由存储区中的数据;
B:访问类的成员数据和成员函数;
C:通过引用传递的方式给函数传递对象或变量.
12.关键字new分配堆中的内存。如果分配成功返回一个地址值,否则返回NULL(空指针).因此,每次使用new时应检查其返回值是否有效.
当不再需要一块内存空间时,必须对它的指针使用delete,以释放目标内存空间.
*说明了指针的函数结束时,指针变量本身的作用域也随之结束,但指针所指向的内存空间不会自动释放,所以必须在函数结束前,对指针使用delete释放它所指向的内存空间.否则导致"内存丢失".
*delete不会删除指针本身,所以被delete的指针可以再次被赋值.
*对一个被delete的指针再次使用delete可能导致程序崩溃.解决办法是delete一个指针后.立即给它赋值0,而对一个空指针使用delete是安全的.
*没有delete一个指针前,对一个已经赋值了的指针重新赋值会导致前一个地址空间丢失.
*良好的习惯是new,delete成对出现.
13.对一个指向对象的指针使用new运算符分配空间时,会调用对象类的构造函数.与此类似,使用delete删除一个对象指针时,会调用一个喜构函数.
14.类的成员变量如果是指针变量。其初始化可在构造函数或其他方法中进行,而清除指针所指向的内存的工作在析构函数中进行.
在析构函数中delete指针成员变量,不需要再把指针赋值为0,因为一旦对象消失,作为它的成员的指针也不能再被访问(当然,赋值0也没害处)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值