C++
柊つ
这个人不懒,只是没有写简介...
展开
-
Linux使用Socket实现多进程和多线程服务端通信及测试
代码贴图:测试:原创 2023-05-15 14:45:06 · 160 阅读 · 0 评论 -
c++动态数组
动态数组vector的使用与优化原创 2023-02-10 19:15:51 · 254 阅读 · 0 评论 -
C++的复制与拷贝构造函数
C++的复制与拷贝构造函数。应该总是通过const引用传递对象。原创 2023-02-04 11:01:21 · 650 阅读 · 0 评论 -
C++智能指针
C++栈对象超出作用域自动销毁,而堆对象需要手动new创建和delete来清理,为了防止忘记释放内存可以使用智能指针。原创 2023-02-03 22:08:36 · 147 阅读 · 1 评论 -
C++中的this关键字
this 是C++中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。原创 2023-02-03 19:48:16 · 965 阅读 · 0 评论 -
C++运算符及其重载
在C++中运算符不仅包括+、-、*、/,还有原创 2023-02-03 18:53:57 · 109 阅读 · 0 评论 -
c++隐式转换与explicit
/这条语句实际上会报错,因为“Name”是sting类型,而参数test是char数组,一次隐式转换不够。先强制转换成Entity型,在隐式转换成string型。//创建一个Entity实体,参数未指定类型,构造方法隐式转换成int型。: Name(name),Age(-1) { } //成员初始化列表。//一次隐式转从Entity型转换成int型。原创 2023-02-03 15:34:18 · 65 阅读 · 0 评论 -
c++ new关键字
delete[] a;在堆上释放指针数组内存,delete entity;使用new以后必须手动释放内存,原创 2023-02-03 15:33:28 · 55 阅读 · 0 评论 -
c++对象的创建和初始化
创建并初始化对象,内存分配到堆上,其中最关键的不是*,而是new,它是一个关键字(后面会讲),返回对象在堆上的内存地址,所以要用指针对象。一般可以在栈内创建就在栈上创建,因为性能问题,在堆上分配要比栈上花费更长时间,而且在堆上分配必须要手动释放被分配的内存。释放内存,不手动释放会导致内存泄漏。创建并初始化对象,内存分配到栈上,适合比较小的类,因为栈比较小。除非创建对象比较大或者想显示的控制对象的生命周期,那就用堆创建。进程结束所有内存被自动释放。原创 2023-02-03 15:32:52 · 285 阅读 · 0 评论 -
c++成员初始化列表
构造函数成员初始化覆盖实际创建的默认初始化。原创 2023-02-03 15:31:54 · 54 阅读 · 0 评论 -
c++ const and mutable
只能在类中使用,这个方法不能改变类中的变量值。不能改变指针指向的地址的值。不能改变指针指向的地址。允许在标记const方法中改变这个变量。原创 2023-02-03 15:31:44 · 63 阅读 · 0 评论 -
c++array
在堆上创建数组,生存周期是主动销毁之前都是活动状态。程序在访问这给数组时会先访问指针地址,再跳转到数值,这种方式是间接寻址,影响性能。在栈上创建数组,生存周期一个代码块。可能的话应该尽量在栈上面创建数组来避免性能影响。c++数组是一个连续的数据块,原创 2023-02-03 15:30:43 · 65 阅读 · 0 评论 -
c++可见性
其中protected表示只有自己和子类可以访问自己类中的变量和函数。private表示私有,只有自己和友元可以访问其中的变量和函数。private、protected和public,c++中可见性定义符有三个。原创 2023-02-03 15:30:13 · 143 阅读 · 0 评论 -
c++虚函数
4.当class的设计目的如果不是作为base class使用,或不是为了具备多态性,则就不该声明virtual析构函数。(因为如果class中含有virutal函数会使得该class的体积增加,因为添加一个vptr(virtual table pointer)会增加其class大小达50%-100%)。同时,需要将定义的指针指向其他对象时,要进行强制类型转换。1.在使用继承的方式实现运行时多态时,基类需要将与派生类相同函数名的函数加上virtual关键字,这样才可以在运行时精准识别出子类的虚函数。原创 2023-02-03 15:29:03 · 54 阅读 · 0 评论 -
c++类的继承
class 类名 : public 父类名。子类可以访问父类中任何非私有的东西。原创 2023-02-03 15:28:57 · 47 阅读 · 0 评论 -
c++构造函数与析构函数
每当创建一个类的实例,它的构造函数会自动运行进行初始化,构造函数的名字必须和类名相同,构造函数可以没有任何参数和内容,一个类会有一个默认的构造函数,可以使用 类名()=delete 来删除默认构造函数。构造函数可以被重载。析构函数名字就是构造函数前面加上~,当对象被销毁时自动调用析构函数。原创 2023-02-03 15:28:24 · 59 阅读 · 0 评论 -
c++函数
函数分为声明和定义,声明写在头文件里,定义写在cpp文件中。除了主函数,其他非void返回值类型的函数必须有返回值。原创 2023-02-03 15:27:26 · 56 阅读 · 0 评论 -
C++的变量
一般一个bool类型变量占用一个byte,因为内存寻址只能通过byte,不能通过bit寻址,那感觉有些浪费,因为一个bool变量只存一个bit的值,当然我们可以通过用一个byte存8个bool的方式来解决。它们的大小由编译器决定。那么我们如何知道当前的变量大小,可以用sizeof ()函数得到。C++数据类型:char,short,int,long,long long,还有float,double以及bool。无符号unsigned。原创 2023-02-03 15:27:14 · 59 阅读 · 0 评论 -
C++编译和链接
链接在编译之后会带走所有的.obj目标文件进行链接,链接会检查用到或者声明的函数是否存在,有趣的是,如果你定义了一个函数a,里面调用的函数b不存在,但实际上你没有用到函数a,此时也会报链接错误,这是因为编译器觉得你在这个文件用不到,但可能会在其他文件用到函数a,所以还是检查了a函数的链接问题,那其实如果我们告诉编译器我只在这个文件用到函数a,其他文件不会用到,那么编译器就不会检查这个文件没有用到的函数的链接问题,那么如何实现呢?c++编译生成一个.obj的可执行文件,此时会加载预处理和检查语法错误。原创 2023-02-03 15:26:01 · 153 阅读 · 0 评论