1、 编程基础知识:
(1) 未初始化的全局变量全部初始化为0,局部变量随机分配(和原值相等);
(2) 默认的构造函数将char 型变量出事化为’\0’,对于debug下的编译,int型的默认值为0xcccccccc(-858993460),double为(-9.25586e+061),出现这两种值应警惕变量未赋值;release下赋值任意;函数、类内部未赋值变量随意赋值,函数、类外部全局变量默认赋值为0;
(3) 定义类的对象时必须在定义时赋初值,例:
complex c1(2,4); complex *c2=new complex(3,4);
(4) 数组的构造函数: CTest array[3]={1,CTest(12),2};必须用大括号括住;
(5) 人为定义构造函数后,默认构造函数失效,默认复制构造函数同,但是默认构造函数不能以本对象作为唯一参数,以免与默认复制构造函数混淆;可以是本类的引用;
(6) Const T &a;可以防止变量被改变;
(7) 调用复制构造函数有三种情况,第一种是用一个类初始化另一个类,第二种是类作为函数的形参,第三种是类作为函数的返回值;
(8) 对于返回非类参数的函数而言,函数的生命周期只有执行这一行,返回值在返回时会放入缓冲区,在运行完这一行后缓冲区会被销毁;对于返回类的函数而言,当赋值语句的左值为类的引用时,缓冲区不会被立即销毁,而是等到该引用失效后才会被销毁;
例:string fun();{return “some”;}
int main()
{
const char *c=fun.c_str();
cout<<c<<end;
string &str=fun();
cout<<str.c_str()<<endl;
return 0;
}
第一个输出为“”,第二个输出为some;
(9) char *p=new char[10]; delete []p;
(10) “=“可重载为复制构造函数;
(11) 先定义的变量后销毁,变量在内存中以堆栈存储;
(12) sizeof(某类)测类的非静态成员变量大小;
(13) 类静态成员变量的赋值必须在类外,否则会报错;
2、编程技巧心得:
(1)学习编程按照教材系统学习VS按照项目要求按需去学
我觉得有必要把一门编程语言系统化的去学习,可以提高编程效率,编程考虑的综合因素,虽然深入学习一门语言会花费较多时间,但是再学习其他语言的时候将会快很多,知识体系一旦成型,学习速度将会快的惊人,所以还是踏实先学好c++吧。
3、遗留问题:
暂无;