没有目录(蠢蛋不配有目录)
♈1.定义变量时,由于其定义顺序决定了构造顺序,所以初始化时要根据其定义顺序进行
♉2.对于书写格式,一般都是要按照调用的函数方法,不同的定义可能会导致无法调用方法
♊3.使用指针要记得对其进行初始化,实际上这还不是关键。
使用类指针时,他要指的一定是对象,否则他就是一个空对象。
♋4.遗漏大括号问题. 这里会报错为未找到匹配命令,且会指出错误所在整体区域
第一个构造函数这里少了个大括号,导致后面所有函数失效
♌5.检查空间的活没有特殊要求,要放到函数开头 //这中间要涉及到很多因素,有可能函数结束后会改变很多条件,甚至会有些值是随机值,导致出现栈错误。
♍6.对于不能调用问题 大部分都是以一个非对象来调用方法(核心思想:实际的对象才有调用方法的权利
很明显这里的arr只是个指针,即使在当前类中把Hashnode声明为友元依旧不能调用。
♎7.针对自定义的类,c++11会产生默认的无参构造函数,如果自己定义了带参的构造函数,此时若要无参实例对象,则会报错,因为此时不会自动生成默认的构造函数。
♏8.可爱的const
const在最前面那他修饰的是整体的结果 在中间那他指的是中间过程
这里的对于a的const限定的是指针所指的内容不可修改,但是指针可以改变指向也就是a ++是可以的
对于b的const则是限定的指针指向不可修改,指向的内容可以改变,这里的举例是(*b)++
♐9.常量指针(const的位置)
因为所谓的arr实际上是一个常量指针,arr只代表arr[0]不能++操作。 |
int const *p 和 int *const p 是两种不同的指针类型,分别表示指向常量的指针和指针常量。
int const *p:这表示 p 是一个指向 int 类型常量的指针。也就是说,p 所指向的值是常量,不能通过 p 来修改它所指向的值。但是,指针 p 本身是可以修改的,可以让它指向其他 int 类型常量。
cppCopy Code
intvalue = 5;
intconst*p = &value;
// 错误示例:无法通过 p 修改所指向的值*p = 10; // 编译错误// 正确示例:可以改变指针 p 的指向intanotherValue = 15;
p = &anotherValue;
int *const p:这表示 p 是一个指针常量,指针 p 的值不能改变,即不能让它指向其他内存地址。但是,通过指针 p 可以修改它所指向的值。
cppCopy Code
intvalue = 5;
int*constp = &value;
// 正确示例:可以通过 p 修改所指向的值*p = 10;
// 错误示例:无法改变指针 p 的指向intanotherValue = 15;
p = &anotherValue; // 编译错误
总结:
- int const *p:指向常量的指针,所指向的值是常量,指针本身可以更改指向。
- int *const p:指针常量,指针本身的值是常量,不能更改指向,但可以通过指针修改所指向的值。
const int *p、int const *p 和int * const p 都是指针相关的声明,它们涉及到 const 修饰符在不同位置的使用。
1)const int *p:这个声明表示 p 是一个指向常量整数的指针。也就是说,p 所指向的整数是不可修改的,但指针 p 自身是可变的,可以指向其他地方。通过 p 可以读取所指向的整数的值,但不能通过 p 修改这个整数的值。
2)int const *p:这个声明和 const int *p 是等效的,表示 p 是一个指向常量整数的指针。无论 const 位于 int 前面还是后面,它都修饰了整数本身,使其成为常量。因此,对于指针 p,同样可以读取所指向的整数的值,但不能通过 p 修改这个整数的值。
3)int * const p:这个声明表示 p 是一个指向整数的常量指针。也就是说,p 的指向不可变,它将一直指向初始化时所指向的整数变量,不能再指向其他地方。但是,通过 p 可以修改所指向的整数的值。也就是说,可以通过 p 进行赋值操作来改变所指向整数的值,但不能改变指针 p 自身的指向。
综上所述,const int *p 和 int const *p 都表示指向常量整数的指针,而 int * const p 表示指向整数的常量指针。注意,这些声明中的 const 关键字的位置不同会产生不同的含义。
实际上我在知乎上看到了一个老哥的记忆方法,在这里分享一下,关于顶端const和底端const,不用搞得那么学术,管他什么顶端底端的呢,只要记住一点就好,那就是const优先和它的左侧进行合体,const int * p 没有左侧,那他就修饰它的右边,也就是int;int const * p ,这个时候const修饰的也是int 和上面那个一样。 int * const p ,ok 这里修饰的是* 。
(我个人的观点:学c++没必要把它当一门学术去学,它本身就是一个语言,整天专家那一套有用?不如让他中国化,想一下老外学编程那不就=
整形 啊= 10;
整形 波 =20;
整形 次= 啊+ 波;
以这个观点再开看看咱这些所谓的专业术语,有用?[其实也有用,如果要了解行业前沿,去跟老外交流汉化变编程还真行不通] )
以上观点仅适合菜鸟。
♑10._findnext 报错
更改为32位即可处理 但这并不是好办法
真正的改进是:
long hFile; 改成: intptr_t hFile;
因为_findnext()返回类型为intptr_t而非long型,从“intptr_t”转换到“long”丢失了数据。
64位机器下也可以该位long long
别问为什么到摩羯座就没了(因为我是摩羯座)