c++
文章平均质量分 59
c++
莫忘、莫念
自律即自由
展开
-
哈希(c++)
遍历字符串中的每个字符,将哈希值乘以一个常数(31),然后加上当前字符的 ASCII 值。理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。如果构造一种存储结构,通过某种函数(hashFunc)使元素的。hashi+i(i>=0) ,i可以是0,1,2,3。这个特化的哈希函数适用于处理字符串类型的关键字。为哈希表(Hash Table)(或者称散列表),那么在查找时通过该函数可以很快找到该元素。该方式即为哈希(散列)方法,哈希方法中使用的。模板特化中使用了一个简单的。原创 2023-11-22 10:55:01 · 132 阅读 · 0 评论 -
c++多态
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价例如:下面sizeof(Base)是多少?char _c;public:cout原创 2023-10-22 20:50:26 · 121 阅读 · 0 评论 -
c++继承
如上面的继承关系,在Student和Teacher的继承Person时使用虚拟继承,即可解决问题。需要注意的是,虚拟继承不要在其他地方去使用。,在派生类中,这几个成员函数是如何生成的呢?基类的对象 / 基类的指针 / 基类的引用。Person成员有两份。函数名相同就构成隐藏。原创 2023-10-18 23:55:19 · 147 阅读 · 0 评论 -
非类型模板参数+模板的特化
对模版参数进一步进行条件限制。情况二参数更进一步的限制。原创 2023-10-14 21:34:08 · 139 阅读 · 0 评论 -
浅拷贝和深拷贝
目录一.什么是浅拷贝,什么是深拷贝二.浅拷贝发生错误过程三.关于浅拷贝的详细讨论四.深拷贝一.什么是浅拷贝,什么是深拷贝浅拷贝:位拷贝,拷贝构造函数,赋值重载 多个对象共用同一块资源,同一块资源释放多次,崩溃或者内存泄漏深拷贝:每个对象共同拥有自己的资源,必须显式提供拷贝构造函数和赋值运算符二.浅拷贝发生错误过程在程序运行过程中,如果一个对象的变量B动态开辟了一个内存空间,在进行位拷贝的时候,就把B的值完全赋给A。在赋值过程中,就是A中变量...原创 2022-04-27 20:11:23 · 154 阅读 · 0 评论 -
new和delete
new,开空间+构造函数初始化delste,调用析构函数+释放空间class Apublic:~A()private:int _a;int main()//malloc类型没有办法很好支持申请的自定义对象初始化free(p1);//自定义类型,开空间+构造函数初始化//自定义类型,调用析构函数+释放空间delete p2;delete p3;return 0;原创 2022-03-23 13:52:59 · 2060 阅读 · 0 评论 -
友元的基本知识
一.友元分为友元函数和友元类 友元函数:一个类的友元函数可以访问该类的私有成员 友元类 :如果A是B的友元类,那么A的成员函数可以访问B的私有成员二.为什么要用友元函数 1. 类的私有成员是不允许类外的任何函数和外部类存取的,可以引入友元函数,是为在该类中提供一个对外(除了它自己以外)访问的窗口 2.注意:友元函数不是类的成员,不属于任何类 3.友元函数不属于该类的成员函数,它是定义在类外的普通函数,只是类中声明该函数可以直接访问类中的private或者protect...原创 2022-05-04 14:30:32 · 3509 阅读 · 0 评论 -
对象数组(初学)
一.什么是对象数组 所谓对象数组,指每一个数组元素都是对象的数组, 即若一个类有若干个对象,把这一系列的对象用一个数组来存放。 对象数组的元素是对象,不仅具有数据成员,而且还有函数成员二.定义对象数组 类名 数组名[元素个数]; 例如: Box a[3];//a是数组名 三.对象数组初始化 类名 数组名[元素个数]={} 例如: Box a[3]={Box(),Box(15,18,20),Box(16,20,26)}; Box()...原创 2022-04-17 13:28:54 · 6364 阅读 · 0 评论 -
静态数据成员和静态成员函数(static)
静态数据成员和普通数据成员一样遵从public,protected,private访问规则;一.为什么要使用静态数据成员 1.每个对象都有自己都有的数据成员 2.不同对象如何共享数据? 全局变量:谁都可以访问,不安全 静态数据成员:可以实现数据共享,该类的所有对象都共享这块静态存储空间它不属于某一个对象,它与整个程序的生命周期相同,即使某个对象消亡了,静态数据成员还存在,没有改变二.关于静态数据成员的初始化 在类内定义,类外声明 声明的格式 <...原创 2022-05-02 11:54:54 · 9692 阅读 · 9 评论 -
常量对象,常量成员函数和常引用
1.常量对象在定义该对象的时候在前面加const关键字class A{ public: int x,y; A(int m,int n):x(m),y(n) { ; } void show() { cout<<x<<" "<<y; } } ; const A a;//a是常量对象2.常量成员函数 (1)在类的成员函数说明后面加const关键字,则使成员函数变成常量函数 void sho...原创 2022-04-24 15:12:00 · 331 阅读 · 0 评论 -
拷贝构造函数
一.基本类型的赋值 int a=4; int b=a;二.c++两种初始区别 1.对于基本类型没有区别 拷贝初始化 int a=5; 直接初始化 int a(5) 2.对于类类型 直接初始化直接调用实参匹配的构造函数 例如: A x(2);//直接初始化,调用构造函数 拷贝初始化总是调用拷贝构造函数 A y=x;//拷贝初始化,调用拷贝构造函数,三.复制构造函数的基本概念 1.只有...原创 2022-04-24 15:26:19 · 10093 阅读 · 0 评论 -
引用(基础)
引用(基础)原创 2023-02-08 17:20:57 · 449 阅读 · 2 评论 -
析构函数的初学
一.什么是析构函数 1.名字和类名相同,在前面加‘~’,没有参数和返回值,一个类最多只能有一个析构函数 2.析构函数对象消亡时即自动被调用。可以定义析构函数来在对象消亡前做善后工作,比 如释放分配的空间等 3.如果定义类时没写析构函数,则编译器自动生成缺省析构函数。缺省析构函数什么也不做#include<iostream>using namespace std;class A{ public: A() { cout<...原创 2022-03-30 21:39:00 · 5350 阅读 · 5 评论 -
构造函数初始化列表
一.构造函数初始化列表的基本形式 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表, 每个数据成员后面跟一个放在括号中的初始化式。student(int m,int n):shengao(m),tizhong(n) { cout<<"初始化"<<endl; }代码举例:#include<iostream>using namespace std;class student{ private: do...原创 2022-05-02 18:52:08 · 4784 阅读 · 0 评论 -
缺省参数+函数重载+构造函数+运算符重载
自动生成第一种调用系统默认的无参构造函数第二种自己实现无参构造函数class Dateprivate:int _year;int _month;int _day;_month = 1;_day = 2;_day = day;void Print()//打印函数int main()Date d1;d1.Print();d2.Print();return 0;第三种利用全缺省的构造函数class Date。原创 2023-02-10 14:34:19 · 1404 阅读 · 3 评论 -
使用类的成员变量和成员函数
用法一:对象名.成员名#include <iostream>using namespace std;class crectangle{public: int w, h;//w和h是成员变量 void Init(int w_, int h_)//该函数用来初始化,设置宽和高,所以该函数也是成员函数 { w = w_; h = h_; } int area()//下面是三个成员函数 { return w * h; } int perimeter() {原创 2022-01-20 08:39:59 · 1306 阅读 · 0 评论 -
类的成员函数和类的定义分开写(主要::运算符)
类声明时给出函数原型,函数体在外部定义 返回类型 类名::函数名 #include<iostream> using namespace std; class crectangle { public: int w,h; int area();//三个成员函数仅在此处声明 int perimeter(); void init(int w_,int h_); }.原创 2022-03-21 13:42:04 · 258 阅读 · 0 评论 -
内联函数+auto关键字
注意:1.用圆括号,可以说提供的值用来构造vector对象的,上面v1的初始值说明了vector对象的容量;v3的两个初始值分别说明了vector对象的容量和元素的初值。2.用花括号,可以表述成我们想列表初始化给vector对象。四、访问vector对象中元素的方法。二、定义和初始化vector对象。五、向vector对象中添加元素。2.列表初始化vector对象。5.列表初始值还是元素数量?三、vector现成的函数。3.创建指定数量的元素。六、补充auto关键字。原创 2022-11-03 23:12:54 · 1173 阅读 · 0 评论 -
作用域(是标识符在程序中有效的区域)
在类的定义中,用下列访问范围关键字来说明类成员可被访问的范围: private:私有成员,只能在成员函数内访问 publicpro原创 2022-03-23 17:29:34 · 919 阅读 · 0 评论 -
面向对象编程C++(基本知识点)
面向对象编程原创 2022-01-15 17:22:40 · 390 阅读 · 0 评论