- 博客(17)
- 收藏
- 关注
原创 C++内存管理
char2也是在栈上面,字符串确实是存放在常量区的,但是这里表示的意思是讲字符串存放进数组里,而*char也表示首元素的地址,数组开好后就放在了栈上面,所以*char就是存放在栈上面的。因为系统在开辟空间时会多开4个字节,来存储要调用多少次构造函数,在delete时,指针本来指向数组的首位,这时就会向前移动四个字节,取出里面的数字,就能得出要调用多少次析构函数了。pchar3是一个局部变量,是存放在栈上面的,而*pchar3则是指pchar3所指向的那块空间,是存放在常量区的。
2024-07-19 14:39:18 335
原创 C++友元
至于为什么要加const是因为当传第二个参数2时,会先产生一个临时对象,这个临时对象具有常性,所以使用引用传参时才需要加上const。这里的意思是Date是Time的友元,那么就能在Date里访问Time,但是Time并不能访问Date。另外,如果内部类是共有的就可以直接使用,若是私有的就不能使用了,说明内部类也受访问限定符的限制。这种友元关系是单向的,我是你的友元,你不一定是我的友元。这里的类B是类A的一个内部类,还可以看出A的大小只有4。就能发现,类B跟类A在空间独立的,只是受A的类域限制。
2024-07-19 14:34:11 187
原创 const修饰的成员,静态成员和匿名对象
这里调用了13次构造函数,除了前面的3次,还有创建数组的10次,这个数组里面10个对象,就会调用10次构造函数,自定义类型的数组是会调用构造函数进行初始化的。就可以把const加到这个位置,这时的函数叫cosnt成员函数,这样就可以修饰this指针了。其实是出现了权限的放大,这里传给print函数时的类型是A的this指针,但是aa的类型是const修饰后的A的指针。如果定义全局变量就会出现谁都能修改的问题,而C++讲究的是封装,所以全局变量并不靠谱。相对的,在静态成员函数里并不能访问非静态的成员。
2024-07-19 14:31:25 227
原创 运算符重载和初始化列表
但由于调用函数是上面的,那么具体使用就变成了下面的,因为ostream类不能修改,所以就只能写在日期类里面了,但是写在日期类里面的话,日期类对象就抢占了第一个参数,所以cout就只能写在后面了。默认生成的构造函数对内置类型不作处理,这里的_x成员变量是int类型的,编译器也不会作处理,但是这是个const修饰的变量,const修饰的变量只读不写,必须在定义的位置就初始化。这里的两行代码也是拷贝构造;i并不是直接转换成a的,而是会产生一个double类型的临时变量,i的值赋给临时变量,再由临时变量赋值给a。
2024-07-19 14:24:30 570
原创 常见关键字
C语言中常见的关键字总共有这么些下面将对部分关键字进行附加解释auto自动的,所有的局部变量都等于自动变量break停止,用在循环中caseswitch case语句char属于一种类型const用来修饰指针,变量,continue继续,用于循环defaultswitch语句里的默认选项dodo while 循环double属于一种类型short属于一种类型int属于一种类型long属于一种类型long long属于一种类型float属于一种类型。
2023-08-24 19:52:24 51 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人