C++基础
氤鑎麕菕氲
C++,JAVA
展开
-
C++基础之运算符重载(4)指针
指针运算符为*和->原创 2023-03-22 23:19:04 · 77 阅读 · 0 评论 -
C++基础之运算符重载(3)递增
2.二者返回值的区别:前置++重载函数使用引用返回是为了保证应该修改的对象修改了。而后置++重载函数在函数体内创建了一个临时对象temp,出函数体立刻销毁temp,返回temp的引用会出错,因此不能返回引用而返回一个temp的拷贝。1.使用占位参数解决前置++重载函数和后置++重载函数一致的问题。3.重载原创 2023-03-22 16:35:02 · 72 阅读 · 0 评论 -
C++基础之运算符重载(2)左移
首先是语句cout原创 2023-03-21 23:02:14 · 57 阅读 · 0 评论 -
C++基础之运算符重载(1)加号
重载可分为类内重载和全局重载函数,但二者不可同时存在。原创 2023-03-21 22:06:23 · 56 阅读 · 0 评论 -
C++基础之引用
5.引用不能向指针改变指向一样改变引用。3.引用必须引用合法的内存空间。2.一个变量可以有多个引用。1.引用是变量的一个别名。7.引用的本质为指针常量。原创 2023-03-11 10:50:16 · 50 阅读 · 0 评论 -
C++基础之构造函数
分类1按参数:无参构造和有参构造。分类2按类型:普通构造和拷贝构造。定义了有参必须显式定义无参。原创 2023-03-18 17:05:39 · 30 阅读 · 0 评论 -
C++基础之构造函数的调用规则
如果提供了拷贝构造,那么编译器不会提供任何默认构造函数,包括默认的无参有参拷贝。如果提供了有参构造,那么编译器就不提供无参构造,但仍提供拷贝构造。3.默认拷贝构造函数,对类中非静态成员变量进行简单的值拷贝。默认情况下,c++编译器至少会为我们提供类的3个函数。1.默认构造函数(无参,函数体为空)2.默认析构函数(无参,函数体为空)原创 2023-03-18 20:07:58 · 28 阅读 · 0 评论 -
C++基础之拷贝构造函数的调用时机
上述情形本应是dowork1函数首先创建局部对象p(调用有参构造),然后return p是编译器先在栈中创建一个临时的对象temp然后将p拷贝给temp,然后temp再拷贝给p2,应该是2次调用拷贝构造但实际只有一次。Release版本还会采用NRVO优化(named return value optimization),因为返回的对象是有名字的,对象不是在return语句上创建的,连拷贝构造函数都不用调用了。3.函数局部对象以值传递的方式从函数返回。2.对象以值传递的方式传递给函数参数。原创 2023-03-18 19:42:28 · 68 阅读 · 0 评论 -
C++基础之初始化列表及细节
变量将在调用构造函数大括号代码之前被创建,因此第一种写法在大括号内的代码其实已经对变量分配了内存,因此const变量不允许再被修改了。引用变量在底层也是一个const指针参考引用篇。1.对const变量在构造函数中完成初始化。2.对引用变量在构造函数中完成初始化。而初始化列表时还没有分配内存。原创 2023-03-19 14:01:52 · 23 阅读 · 0 评论 -
C++基础之深浅拷贝
如果上述代码不写拷贝构造函数,那么经默认拷贝构造函数浅拷贝(简单的值拷贝)后的数据如上图左(栈中情况),p2和p1都指向堆中的0x001那么析构的时候就释放2次会出错。因此必须写深拷贝重新为新对象在堆中创建新的对应的成员变量。原创 2023-03-18 22:50:51 · 29 阅读 · 0 评论 -
C++基础之类对象作为类成员
当其他类对象作为本类的成员,构造顺序是先调用其他类的构造(其他类之间的顺序看在本类中的声明顺序)再调用本类的构造函数。其他类之间的顺序看在本类中的声明顺序,与初始化顺序无关。首先创建Phone类和Game类。然后定义Person类。原创 2023-03-19 14:22:00 · 52 阅读 · 0 评论 -
C++基础之静态成员
1.静态的成员函数不能访问非静态的成员变量,可以访问静态的成员变量。因为静态成员函数在编译时就产生了(分配了内存),而普通的成员变量在对象创建时才分配内存,因此无法访问。2.普通的函数可以访问静态成员变量也可以访问非静态成员变量,成员函数。2.静态成员变量不属于某个对象,而是属于类,所有对象共享。在成员前加static关键字可以使成员变成静态成员。3.静态成员变量可以通过类名或者对象名的方式来获取。因此静态成员包括静态成员变量和静态成员方法。C++类中的成员指的是成员变量和成员方法。原创 2023-03-19 19:44:58 · 52 阅读 · 0 评论 -
C++基础之this指针
1.this指针指向用来调用成员函数的对象,谁(哪个对象)调用该方法,this指针就指向谁(哪个对象)。2.在类的非静态的成员方法中返回对象本身,可以使用return *this。1.当形参和成员变量同名时,可以用this指针来区分。2.this被作为隐式参数传递给方法,每一个。的成员方法中都有this指针。原创 2023-03-20 22:55:28 · 31 阅读 · 0 评论 -
C++基础之单例设计模式
2.懒汉式:先初始化静态实例为nullptr,调用getInstance方法时如果发现为空指针则创建对象,否则直接返回创建好的对象。1.饿汉式:不管调用不调用getInstance方法,该静态实例在编译阶段已经存在。单例:单个实例(对象),创建一个对象,实例化一个对象,创建一个类的实例。2.私有化声明一个静态的实例(私有的目的是防止外界通过类名直接访问)3.公有化一个getInstance方法返回对象指针。单例的好处:防止创建过多的对象,节省内存。设计模式:程序员的经验总结。4.类外定义静态的实例。原创 2023-03-20 22:36:21 · 25 阅读 · 0 评论 -
C++基础之常函数与常对象
1.this指针的本质为一个指针常量(无法改变指向的指针),2.如果想让this指针指向的对象的内容不能被修改,const Person* const this;3.系统使用在函数参数列表后面大括号前面加关键字const相当于const Person* const this;原创 2023-03-21 15:28:44 · 64 阅读 · 0 评论 -
C++基础之友元(1)友元全局函数
友元有三种1.友元(全局)函数2.友元类3.友元成员函数定义一个家类。原创 2023-03-21 16:36:09 · 90 阅读 · 0 评论 -
C++基础之友元(2)友元类
2.虽然声明了Building类但编译器仍不知道building对象里面有哪些成员,如下会报错,解决方法是声明和对象分开。1.直接使用Building类而上面未声明Building类。在类外访问一个类的私有成员。完成错误解决之后可访问。原创 2023-03-21 16:54:44 · 38 阅读 · 0 评论 -
C++基础之友元(3)友元成员函数
1.友元关系不能被继承,类A是类B的朋友,类C是类A的儿子,类C就不是类B的朋友。3.友元关系不具有传递性。类B是类A的朋友,类C是类B的朋友,但是类C。2.友元关系是单向的,类A是类B的朋友,但是类B不一定是类A的朋友。不一定是类A的朋友。原创 2023-03-21 21:19:33 · 46 阅读 · 0 评论