:::C++类A的构造函数初始化
A::A:x(0){}
1.初始化列表会把类对象里全部数据成员都初始化一遍,然后再在{}函数体里面改变初始值
2。所以最好写在:后面的初始化列表里,避免做同样的事情两次。
3.初始化是按定义时的顺序执行的
4.类里的内部类型数据成员如果在局部内定义对象将会被缺省初始化,如int a,这些将用内存本身的值,所以构造函数都应该提供内部类型的数据成员初始值;
:::C++头文件
1C++的头文件根据最小影响原则,不要使用using声明,而用例如std::vecotr,这样被#include进去不会影响到源代码
2.把类的定义,函数的声明,内联函数的定义等放在 XX.h中,把类的实现代码,函数的实现代码都放在XX.cpp中
3.XX.cpp应该要包含进xx.h,这样可以对比声明和定义有没错,但是因为函数重载的关系,编译器检测这种声明和定义是否一致的能力是有限的,不会完全检测
4.头文件为了避免重复定义一般要用如
#ifndef GUARD_XX
defien GUARD_XX
//内容
#endif
这样可以保护重复定义,因为定义只能用一次,声明可以多次。
:::c++杂
1.全部容器都应该用size_type来声明容器长度类型,对于数组,应该用size_t,定义在include<cstddef>里面 ,数组指针的差值用ptrdiff_
A::A:x(0){}
1.初始化列表会把类对象里全部数据成员都初始化一遍,然后再在{}函数体里面改变初始值
2。所以最好写在:后面的初始化列表里,避免做同样的事情两次。
3.初始化是按定义时的顺序执行的
4.类里的内部类型数据成员如果在局部内定义对象将会被缺省初始化,如int a,这些将用内存本身的值,所以构造函数都应该提供内部类型的数据成员初始值;
:::C++头文件
1C++的头文件根据最小影响原则,不要使用using声明,而用例如std::vecotr,这样被#include进去不会影响到源代码
2.把类的定义,函数的声明,内联函数的定义等放在 XX.h中,把类的实现代码,函数的实现代码都放在XX.cpp中
3.XX.cpp应该要包含进xx.h,这样可以对比声明和定义有没错,但是因为函数重载的关系,编译器检测这种声明和定义是否一致的能力是有限的,不会完全检测
4.头文件为了避免重复定义一般要用如
#ifndef GUARD_XX
defien GUARD_XX
//内容
#endif
这样可以保护重复定义,因为定义只能用一次,声明可以多次。
:::c++杂
1.全部容器都应该用size_type来声明容器长度类型,对于数组,应该用size_t,定义在include<cstddef>里面 ,数组指针的差值用ptrdiff_