
C++
C++基础知识总结
鄠邑原野
这个作者很懒,什么都没留下…
展开
-
C++输入流和输出流
< setiosflags(ios::showbase) //基数。cout.write() //从buffer中写num个字节到当前输出流中。原创 2024-01-21 21:57:44 · 427 阅读 · 0 评论 -
C++异常
异常被抛出后,从进入try块起,到异常被抛掷前,这期间在栈上构造的所有对象,都会被自动析构。析构的顺序与构造的顺序相反,这一过程称为栈的解旋(unwinding)。如果使用指针变量,需要自己delete,否则出现下面的结果。原创 2024-01-21 21:52:03 · 392 阅读 · 0 评论 -
C++类型转换
类型转换(cast)是将一种数据类型转换成另一种数据类型。例如,如果将一个整型值赋给一个浮点类型的变量,编译器会暗地里将其转换成浮点类型。应该小心类型转换,因为转换也就相当于对编译器说:忘记类型检查,把它看做其他的类型。一般情况下,尽量少的去使用类型转换,除非用来解决非常特殊的问题。原创 2024-01-21 21:48:08 · 358 阅读 · 0 评论 -
C++模板(二)
注意:一般在头文件中不会出现 #include"Person.cpp",所以需要将Person.cpp中的成员函数实现拷贝到Person.h中,并且将Person.h命名为Person.hpp,同时需要把main.cpp中的#include"Person.cpp"改为#include"Person.hpp"即可。原创 2024-01-21 21:46:31 · 387 阅读 · 0 评论 -
C++模板(一)
练习:使用函数模板对char和int类型数组进行排序。原创 2024-01-21 21:42:13 · 397 阅读 · 0 评论 -
C++基础知识(多态)
在设计时,常常希望基类仅仅作为其派生类的一个接口。这就是说,仅想对基类进行向上类型转换,使用它的接口,而不希望用户实际的创建一个基类的对象。同时创建一个纯虚函数允许接口中放置成员原函数,而不一定要提供一段可能对这个函数毫无意义的代码。如果出现了纯虚析构函数,这个类也算抽象类,不可以实例化对象。虚析构:用于解决 在释放基类指针(指向的是子类对象)时,不能调用子类的析构函数的问题。可以看出,子类将speak()重写为自己的,所以输出才会是“小猫在说话”。类内声明 类外实现。向下类型转换 不安全的。原创 2024-01-21 21:38:26 · 781 阅读 · 0 评论 -
C++基础知识(继承)
多继承会带来一些二义性的问题, 如果两个基类中有同名的函数或者变量,那么通过派生类对象去访问这个函数或变量时就不能明确到底调用从基类1继承的版本还是从基类2继承的版本?c++最重要的特征是代码重用,通过继承机制可以利用已有的数据类型来定义新的数据类型,新的类不仅拥有旧类的成员,还拥有新定义的成员。一个B类继承于A类,或称从类A派生类B。两个派生类继承同一个基类而又有某个类同时继承这两个派生类,这种继承被称为。注意:不管公有继承 保护 还是私有 基类中的私有属性 ,都不可以继承下去。原创 2024-01-21 21:30:13 · 846 阅读 · 0 评论 -
C++基础知识(运算符重载二)
【代码】C++基础知识(运算符重载二)原创 2024-01-21 21:14:00 · 384 阅读 · 0 评论 -
C++基础知识(运算符重载一)
运算符重载(operator overloading)只是一种”语法上的方便”,也就是它只是另一种函数调用的方式。运算重载符是多态的一种表现。对于内置数据类型,编译器知道如何做运算。原创 2024-01-21 21:12:03 · 426 阅读 · 0 评论 -
C++基础知识(单例模式)
Singleton(单例):在单例类的内部实现只生成一个实例,同时它提供一个静态的getInstance()工厂方法,让客户可以访问它的唯一实例;在单例类内部定义了一个Singleton类型的静态对象,作为外部共享的唯一实例。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。在程序启动时就创建单例对象,这种实现方法的优点是线程安全,因为再程序启动时就已经创建了单例对象,所以不需要考虑多线程同步问题。缺点是可能造成资源浪费,因为即使程序中并没有使用单例对象,它也已经被创建了。原创 2024-01-21 21:05:28 · 885 阅读 · 0 评论 -
C++基础知识(深拷贝与浅拷贝)
没有任何副作用,但是当类中有指针,并且指针指向动态分配的内存空间,析构函数做了动态内存释放的处理,会导致内存问题。同一类型的对象之间可以赋值,使得两个对象的成员变量的值相同,两个对象仍然是独立的两个对象,这种情况被称为。如果属性里有指向堆区空间的数据,那么简单的浅拷贝会导致重复释放内存的异常;做了释放处理,往往需要自定义拷贝构造函数,自行给指针动态分配空间,,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经。当类中有指针,并且此指针有动态分配空间,浅拷贝只是对指针的拷贝,原创 2024-01-21 21:02:24 · 355 阅读 · 0 评论 -
C++基础知识(友元)
友元关系不具有传递性。类B是类A的朋友,类C是类B的朋友,但类C不一定是类A的朋友。全局函数写到 类中做声明 并且前面加上关键字 friend。friend class 类名。成员函数作为友元函数。原创 2024-01-21 20:58:49 · 353 阅读 · 0 评论 -
C++基础知识(常函数和常对象)
2、常函数 修饰是 this指针 const Type * const this。4、常对象 在对象前面加上const修饰 const Person p1。1、常函数 void func() const {} 常函数。6、用multable关键字修饰的成员变量在常函数中可以修改。5、常对象不可以调用普通的成员函数,可以调用常函数。3、常函数 不能修饰this指针指向的值。原创 2024-01-21 20:57:24 · 361 阅读 · 0 评论 -
C++基础知识(空指针)
2、如果成员函数用的this指针,就要注意,可以加if判断,如果this为空,就return掉。1、如果成员函数没有用到this,那么空指针可以直接访问。原创 2024-01-21 20:56:28 · 389 阅读 · 0 评论 -
C++基础知识(this指针)
4、非静态的成员函数才有this指针。3、*this指向对象本体。1、指针永远指向当前对象;2、解决命名上的冲突;原创 2024-01-20 15:21:24 · 322 阅读 · 0 评论 -
C++基础知识(成员变量和成员函数)
3、只有非静态成员属性才属于对象身上。1、成员变量和成员函数是分开存储的;原创 2024-01-20 12:49:06 · 438 阅读 · 0 评论 -
C++基础知识(默认拷贝构造函数调用时机)
Person p1;//拷贝的数据以引用的方式进行传递,因此,操作的p1是之前的p1.1、用已经创建好的对象初始化新的对象;Release下优化成什么样?分析:两种模式下的结果不同。的方式对函数参数进行传值;3、以值方式返回局部对象。原创 2024-01-20 12:47:53 · 371 阅读 · 0 评论 -
C++基础知识(类和对象)
定义一个结构体用来表示一个对象所包含的属性,函数用来表示一个对象所具有的行为,这样就可以表示一个事物。在C中,行为和属性是分开的。属性和行为应该放在一起,一起表示一个具有属性和行为的对象。封装提供一种机制能够给属性和行为的访问控制权。所以说,封装包含两个方面:1)属性和变量合成一个整体;2)给属性和访问增加权限。class默认访问权限是private,struct默认访问权限是public。现实世界中,将事物的属性和行为表示出来,就可以抽象出这个事物。1)可赋予客户端访问属性的一致性;访问权限------原创 2024-01-20 12:44:59 · 445 阅读 · 0 评论 -
C++基础知识(函数重载)
C++中允许出现同名函数,这种现象就叫函数重载。函数重载的目的是为了方便使用函数名。原创 2024-01-20 15:17:01 · 485 阅读 · 0 评论 -
C++基础知识(内联函数及默认参数设置)
当调用一个内联函数时,编译器首先确保传入参数类型是正确匹配的,或者如果类型完全不匹配,但是可以将其转换为目标类型,内联函数就会直接替换函数调用,这就消除了函数调用的开销。内联函数只是给编译器的一个建议,编译器不一定会接受这种建议,如果没有将函数声明为内联函数,那么编译器也可能将此函数作内联编译。为了保持预处理器宏函数的效率,没有函数调用时开销,然后又可以像普通函数那样,可进行参数、返回值得安全检查,又可以作为成员函数。C++在声明函数时,可以设置占位参数,占位参数只有参数类型声明,而没有参数名声明。原创 2024-01-20 12:40:20 · 414 阅读 · 0 评论 -
C++基础知识(常量)
在C++中定义const时,编译器为他创建空间,所以如果两个不同文件中定义多个同名的const,链接器就会发生链接错误,简而言之,在C++中,const用的更好。首先,它能够明确指定类型。:如果C中出现两个文件中都包含const int a时,编译器会报重定义错误,而在C++中则不会报错,因为C++中是默认内部连接,如果想让C++中的const具有外部连接,必须显式声明为:extern const int a=10;1、const有类型,可进行编译器类型安全检查,#define无类型,不可进行类型检查。原创 2024-01-20 12:37:33 · 375 阅读 · 0 评论 -
C++基础知识(命名空间)
eg5:没有命名空间,意味着命名空间中的标识符只能在本文件中访问,相当于给这个标识符加上了一个static,使得其可以作为内部链接。作用:通过命名空间来控制对名字的访问,避免发生命名冲突,可以更好地控制标识符的作用域。eg4:命名空间中的成员函数声明和实现相互分离。eg3:命名空间可随时添加新成员。eg2:命名空间可嵌套命名空间。eg1:创建一个命名空间。eg6:命名空间别名。原创 2024-01-20 11:19:43 · 361 阅读 · 0 评论 -
C++基础知识(常函数)
特点:①可以使用数据成员,不能进行修改,对函数的功能有更明确的限定;③常函数的this指针是const CStu*.②常对象只能调用常函数,不能调用普通函数;形式: void fun() const {}构造函数和析构函数不可以是常函数。原创 2024-01-20 11:14:48 · 390 阅读 · 0 评论 -
C++基础知识(析构函数)
2、指针对象(堆区,不会自动释放==》不会自动调用析构,需手动释放,用delete)1、局部对象(栈区,会自动调用析构函数)3、临时对象(作用域:所在语句)原创 2024-01-20 11:11:56 · 341 阅读 · 0 评论 -
C++基础知识(初始化列表)
多个构造函数,初始化列表绑定所在的构造函数。2 通过构造函数参数对数据成员进行初始化。1 通过数值对数据成员进行初始化;3 通过成员之间相互初始化。原创 2024-01-20 11:01:32 · 337 阅读 · 0 评论 -
C++基础知识(构造函数)
析构函数,常函数,拷贝函数,内联函数以及静态成员函数。构造函数,自动调用,没有返回值。作用:对数据成员进行赋值(初始化)。原创 2024-01-20 10:50:17 · 373 阅读 · 0 评论 -
C++基础知识(友元)
①不受访问修饰符的影响,即友元函数或者友元类的访问修饰符可以是public\protected任意一种;缺点:破坏类的封装性,不是迫不得已不使用。使用protected成员有两种方法:继承和友元。使用private成员:友元。关键字:friend。原创 2024-01-20 10:32:52 · 428 阅读 · 0 评论 -
C++基础知识(类和结构体)
子类可以使用父类受保护的成员,除子类外(其他类、自定义函数和主函数)均不能使用;作用范围:从书写的位置开始,到下一个修饰符或者到类结尾的花括号。系统不会为类分配空间,只有当声明对象时(创建时),才会分配空间。类的所有成员(个别特殊static),必须由对象访问。protected在子类和类内使用;,private类内可见,纯私有,只能在类内使用;对象->成员 (注意释放指针对象)public都可以使用;原创 2024-01-19 00:09:21 · 372 阅读 · 1 评论 -
C++基础知识(引用)
引用是C++对C的一种重要扩充。C++增添了一种给函数传递地址的途径,即按引用传递(pass-by-reference).Note:(1)变量名实际上就是一段连续内存空间的别名,是一个标号(门牌号);(2)程序中通过变量来申请并命名内存空间;(3)通过变量的名字可以使用存储空间。原创 2024-01-19 00:04:30 · 409 阅读 · 0 评论 -
C++基础知识(面向对象)
比如,我们正在研制一种新型共享单车,但是又不想重新编写原有的代码,所以将之前的共享单车看成是一个类(类1),再重新声明一个类(类2),继承类1的所有数据和方法,再在类2中修改或者增加新的功能数据方法即可。例如,张三是一个人,我们把他看成是一个对象,李四也是一个人,我们把他看成是一个对象,王麻子也是一个人,我们把他看成是一个对象......他们都是具体的一个个对象,但是我们发现他们都具有相同的特征------他们都是人(能够直立行走和使用工具等),所以将他们抽象的看作一个类------人类。原创 2024-01-18 23:54:09 · 571 阅读 · 0 评论 -
C++基础知识(VS实现第一个程序)
程序的第3行是主函数入口,每一个C++程序中,有且仅有一个main函数(主函数)---->单个文件只能有一个main函数,多个文件只能有一个文件中有一个main函数,main前面的int的作用是声明函数的类型为整型。面向对象先找到的是冰箱,冰箱具有打开、存储和关闭的功能,也就是说冰箱是一个封装了这几种功能的一个实体对象。保存(Ctrl+s或者单击文件--->保存)后,按生成--->生成解决方案--->调试--->启动调试。C++是一种面向对象的语言,C++保留了C语言的优点,同时又引入了面向对象的机制。原创 2023-12-04 00:03:44 · 814 阅读 · 1 评论