C++
文章平均质量分 91
排骨炖粉条
愿你在冷铁卷刃前,得以窥见天光。
展开
-
模板详解:泛型、函数\类模板、特化
优点模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库STL因此而生增强了代码的灵活性缺点模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息会非常混乱,不容易定义错误。原创 2024-05-28 23:12:42 · 1056 阅读 · 1 评论 -
C++下的内存管理
malloc不方便解决动态申请的自定义类型对象的初始化问题。单个空间开辟int main()//创建一个A类型的对象,为这个对象开辟一块空间//malloc 只是开辟了空间//new 在开辟空间的同时进行了调用构造函数,进行了初始化free(p1);delete p2;return 0;多个int main()A aa1(1);A aa2(2);A aa3(3);原创 2024-05-19 23:10:28 · 712 阅读 · 0 评论 -
const成员、友元成员、static成员
将const修饰的成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明再该成员函数中,不能对类的任何成员进行修改。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加。内部类是外部类的友元类,内部类可以通过外部类的对象参数来访问外部类中的所有成员,但是外部类不是内部类的友元。这两个默认成员函数一般不用重新定义,编译器默认会生成。如果C是B的友元,B是A的友元,则不能说明C是A的友元。原创 2024-05-18 22:53:31 · 890 阅读 · 0 评论 -
运算符重载:赋值、判断
此时用户再在类外自己实现一个全局的赋值运算符重载,就和编译器在类中生成的默认值运算符重载冲突了,所以赋值运算符重载只能是类的成员函数。C++为了增强代码的可读性,引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名以及参数列表,其返回值类型与参数列表与普通的函数类似。先判断两个参数是否是同一个对象,如果是则直接返回第一个对象,如果不是则将第二个参数的成员变量依次赋值给第一个参数的成员变量,然后返回第一个参数的引用。根拷贝构造的行为类似,内置类型值拷贝,自定义类型调用它的赋值。原创 2024-05-15 23:40:34 · 877 阅读 · 0 评论 -
默认成员函数:析构、深浅拷贝
s2使用s1拷贝构造,而Stack中没有显式定义的拷贝构造函数,此时编译器默认生成了一个拷贝构造函数,默认的拷贝构造函数是按照值拷贝的方式进行拷贝的,即将s1中的成员变量存储的值原封不动的赋值给了s2中的成员变量,拷贝结束之后,s2中的成员变量指向了和s1成员变量指向的同一片空间。当程序结束的时候,s2先销毁,s1后销毁,s2先调用析构函数对这片申请的空间进行了析构,然后s1销毁,此时s1并不知道这片内存空间已经销毁了,再次对这片空间进行了析构,此时就会崩溃。对象的栈帧的开辟和销毁都是由编译器进行的。原创 2024-05-14 23:21:03 · 746 阅读 · 0 评论 -
默认成员函数:构造
构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都有一个合格的初始值,并且在对象整个声明周期中只调用一次。构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象。如果成员都是自定义类型,或者声明时给了缺省值,可以考虑让编译器自己生成构造函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。任何类在上面都不写时,编译器会自动生成六个默认成员函数。原创 2024-05-12 23:34:58 · 970 阅读 · 0 评论 -
类和对象以及this指针详解
类体:由成员函数和成员变量组成一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主题,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。定义方式方式一声明和定义全部放在类体中成员函数如果在类中定义,编译器可能会将其党曾内联函数处理public:public:char* _sex;int _age;方式二类声明放在.h文件中,成员函数定义放在.cpp文件中。原创 2024-05-07 08:24:40 · 580 阅读 · 0 评论