摘要: 类对象作为类成员的时候,我们需要考虑构造和析构的顺序。 有 class A 和 class B ,如果 class A 的对象作为 class B 的成员,在构造一个 B 的对象时,首相应该构造 A 的对象,让后再构造 B 的对象;而析构 B 的对象时,首相析构 B 的对象再析构A的对象。 阅读全文
posted @ 2023-02-24 17:05 Meetalone 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 浅拷贝:默认的拷贝构造函数实现的是浅拷贝,对于指针成员,浅拷贝编译器直接将指针的地址拷贝给新的对象,而不是将指针指向的内容指向新对象,这样在进行析构的时候就会多次释放导致崩溃。 深拷贝:为了解决浅拷贝的问题,我们通常进行手动的深拷贝,在堆中重新申请一块儿内存,然后将拷贝对象的内容复制进去,实现内容的 阅读全文
posted @ 2023-02-24 16:59 Meetalone 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 这里讨论两种情况下的拷贝函数调用: 作为参数传值过程中的拷贝函数调用,有一个Dog类,d1是Dog类的一个实例现在通过function将d1传入,void function(Dog dog); d1是dog的实参,在调用function的过程中产生了一个拷贝构造的调用,相当于Dog dog = Do 阅读全文
posted @ 2023-02-24 15:51 Meetalone 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 调用无参构造不能使用括号,编译器会判定这种写法为函数申明 构造函数除了一般的参数构造和默认的无参构造,还有拷贝构造注意拷贝构造的写法。假设有一个Dog类拷贝构造函数为Dog(const Dog &d);这样的构造函数就是拷贝构造函数。 匿名对象不能使用拷贝构造。假设存在一个Dog类实例d1,那么Do 阅读全文
posted @ 2023-02-24 14:41 Meetalone 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 封装是面对对象的三大特性之一,它是指将属性和行为作为整体来描述事物 封装通过关键词class将事物的属性和行为绑定在一起。 具体可以这样描述:当我们想要描述一只狗的时候,首先会想到他的外在特点,比如狗的品种,颜色,名字,体重等,这些都称作狗的属性;同时,狗能喝水,吃饭,还能撒娇,这些都是狗的行为。虽 阅读全文
posted @ 2023-02-24 11:43 Meetalone 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 对于传参,我们可以这样理解,即将形参用给定的实参进行初始化。从这个方面来理解函数重载的一些问题,将会更加清晰。 引用作为重载参数 这里可以跟为两种情况: 不含const,此种优先级最高 包含const,通常在实参为常量时调用该重载 下面将对引用作为重载参数进行详细阐述: void function( 阅读全文
posted @ 2023-02-23 23:34 Meetalone 阅读(16) 评论(0) 推荐(0) 编辑
摘要: C++允许在声明函数的时候对形参指定默认值,同时,以参数次序,从第一个赋予默认值的形参开始,以后的所有形参都必须赋予默认值: void function(int a =10, int b =20); //正确 void function(int a = 10, int b); //错误 在函数声明完 阅读全文
posted @ 2023-02-23 22:56 Meetalone 阅读(13) 评论(0) 推荐(0) 编辑
摘要: C++的内存包含4个大区,它们分别是代码区、全局区、栈区和堆区。 以下将对它们的分区进行进一步的阐述。 代码区:对于一段代码,首先要经过编译之后生成可执行文件才能执行,在Windows下通常为以.exe结尾的文件,而C++将这样的可执行代码单独存放在内存的一个固定区域,也就是说代码区在程序执行前就已 阅读全文
posted @ 2023-02-23 21:56 Meetalone 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 类型别名——类型别名指的是某种类型的同义词,通常使用typedef声明,C++11新增了using方式 例如:typedef int num; using num = int; 以上两种方式均可,注意不要轻易将别名与原来类型表达式等价理解。对于指针类型有如下情况: using p = int*; c 阅读全文
posted @ 2023-02-14 17:39 Meetalone 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 常量表达式——常量表达式指的是值不会改变,并且计算结果在编译过程就能得出的表达式。 C++11新增的constexpr就是为直接检测某一表达式是否是常量表达式而存在,使用constexpr声明的变量后,编译器会自动检测表达式。 字面值类型如算术类型、引用类型和指针类型都能定义成常量表达式。 这里需要 阅读全文
posted @ 2023-02-14 12:02 Meetalone 阅读(304) 评论(0) 推荐(0) 编辑