- 博客(76)
- 收藏
- 关注

原创 C++:构造函数
当成员里含有自定义类型时,而自定义类型又没有默认构造函数,只有带参的构造函数时,只能调用带参的,这个时候我们就可以在初始化列表里面调用(当处于这个类的无参构造时)。
2025-05-12 12:00:00
1805
4

原创 Java-字符串相关类的底层原理
1.直接赋值会复用字符串常量池中的,而字符串常量池中的不能改变,所以这种字符串的改变其实是把引用的地址改变了。2.new出来的不会复用,而是开辟一个新的空间。
2024-10-21 21:04:51
187
6

原创 C++:类和对象1
/类体,由成员函数和成员变量组成//注意有分号,这个和结构体相同class为定义类的关键字,classname为类的名字,{}中为类的主体,着重注意类后面的分号不能省略。类体中的内容称为类的成员,类中的变量称为类的成员变量或者类的属性,类中的函数称为类的方法或者成员函数。int num;char name;方法如果直接在类里面定义默认就是内联。在一个.h文件中public:public:int a;int num;char name;
2024-10-16 22:08:49
1900
2

原创 C++入门
定义命名空间需要使用关键字:namespace,后面跟命名空间的名字,具体内容包含在跟在命名空间名字后面的花括号里(即为命名空间的成员)。注:命名空间里什么都能定义。return x+y;int val;
2024-07-29 11:00:58
569
1
原创 Java-包
1.使用同一个包中的类时,不需要导包2.使用java.lang包中的类时,不需要导包。(因为java.lang包是java的核心包,使用它是不需要导包)3.其他情况都需要导包4.如果同时使用两个包中的同名类,需要使用全类名。
2025-05-19 12:00:00
479
2
原创 C++:模板初阶
class 类模板名public:f(T a){}template<class T>//还要写类模板名<T>::f(T a)...普通的类类名就是类型,类型=类模板名<模板参数>指定类域要用类型不过类的声明和定义不要轻易分离,分离到两个文件里面会报错。
2025-05-19 12:00:00
303
1
原创 python-爬虫基础
响应分为两种,一种是服务器渲染,另一种是客户端渲染。服务器渲染就是在服务器端把数据和html源码结合在一起,我们要的数据在html源码里,客户端渲染是第一次请求的时候只返回html框架,第二次请求的时候把关键字发给服务器,服务器再把数据返回,也就是说html源码和数据是分开的。不过现在还是有个问题,我们得到的源码里面一大堆看不懂的东西。不过这里面的问题就来了,我们解码是按照utf-8还是jdk呢?浏览器里我们只要输入网址,按下回车,就相当于发送了一个请求。这里跑出来的中文是这样的。
2025-05-18 12:00:00
129
1
原创 C++:static成员
有static修饰的类成员称为类的静态成员,static修饰的成员变量称为静态成员变量,static修饰的成员函数称为静态成员函数。成员变量需要在类外面进行初始化。
2025-05-18 12:00:00
197
1
原创 Java-内部类
如果被private修饰了,那么外界就不能直接创建成员内部类,不过在外部类的里面可以创建成员内部类,因为内部类是外部类的成员。如果是被protected修饰,那么它可以在本包里的其他类中使用,也可以在其他包的子类里面使用。静态内部类中只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象。在以后,凡是提到成员内部类,都是指static修饰的静态成员内部类。内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义。B就是A的内部类,A是B的外部类。写在成员位置,属于外部类的成员。
2025-05-17 12:00:00
347
原创 C++:内部类
内部类是定义在另一个类内部的类,它不属于外部类,且外部类无法直接访问内部类的对象。内部类类似于特殊的友元类,但外部类并非内部类的友元类。内部类可以在外部类的任何位置定义,并可以直接访问外部类中的静态成员,无需通过外部类对象或类名。外部类的大小与内部类无关。内部类受外部类的访问限定符和类域的限制,若内部类定义在外部类的公有部分,可通过外部类::内部类的方式访问;若定义在私有部分,则需通过外部类的函数间接访问。
2025-05-16 12:00:00
165
原创 C++:运算符重载
运算符重载是C++中类的默认成员函数之一,允许用户自定义类对象之间的操作符行为,以增强代码的可读性和表达力。运算符重载通过特殊函数名operator实现,例如date operator+(...)。其关键特征包括:不能创建新操作符,必须有一个类类型参数,不能改变内置类型运算符的含义,作为成员函数时操作数减少(因隐含this指针),不能改变操作数个数,且某些操作符如*可重载,而@则不可。这些规则确保了运算符重载的合理性和一致性。
2025-05-15 12:00:00
261
原创 C++:匿名对象
当我们要调用一个类里面的非静态成员函数时,通常需要先创建一个对象,通过这个对象我们才能调用函数,不过有了匿名对象之后,我们可以简化部分操作。我们传参通常是先定义对象再传参,也可以用隐式类型的转换来传,不过为了防止别人把这个给禁用了,我们还想写成一行,就可以使用匿名对象。声明周期只在这一行,别人用不了。
2025-05-15 12:00:00
127
原创 C++:const成员函数
const成员函数通过修饰this指针,确保在函数内部不会修改类的任何成员,从而解决const对象调用非const函数时的权限放大问题。const关键字应写在参数列表后、函数体前,而非直接修饰this指针。const成员函数和非const成员函数可以构成重载,允许根据对象的const性质选择调用合适的版本。此外,const void f(){}中的const修饰的是返回值,而非函数本身。
2025-05-14 12:00:00
183
原创 C++:取地址运算符重载
取地址运算符重载是类的六个默认成员函数之一,这里的默认是指我们不写,编译器会自己生成的。一般来说我们不太需要自己实现这个函数,不过当我们不想要被取到有效地址是可以自己来实现。
2025-05-14 12:00:00
94
原创 Java-集合
/这个集合里面就只能存字符串了,不过以上的写法是在JDK7以前的写法,以后的写法里,后面的那个String可以不写。//其实,如果我们查阅API帮助文档会发现,集合的类名里有个尖括号<E>,即ArrayList<E>//如果我们把数据类型定义成int,则会报错,因为它是一个基本数据类型,这里我们可以存String.4.E set(int index,E e) 修改指定索引下的元素,返回原来的元素。//我们发现这里没有限定其元素的类型,它不像数组,在创建是就规定的元素的类型。
2025-05-13 11:30:00
299
原创 C++:拷贝构造
拷贝构造函数是C++中类的默认成员函数之一,用于通过一个已存在的对象来创建另一个对象。其特点包括:它是构造函数的重载形式,且参数必须为该类对象的引用,以避免无穷递归调用。使用引用而非指针可以防止空指针问题,因为引用必须绑定到有效对象。拷贝构造函数可以定义为date(date& d){},若希望不改变原对象,可使用date(const date& d){}。浅拷贝直接复制值,可能导致多个对象共享同一内存空间,而深拷贝则创建新的内存空间。
2025-05-13 11:30:00
296
原创 C++:析构函数
析构函数是C++类中的默认成员函数之一,用于在对象生命周期结束时清理资源。其名称由类名前加“~”构成,无参数和返回类型,且一个类只能有一个析构函数,不能重载。如果未显式定义,编译器会自动生成默认析构函数。析构函数在对象作用域结束时自动调用,调用顺序遵循后进先出原则。默认析构函数对内置类型不做处理,但对自定义类型会调用其析构函数。若类中无需要手动释放的资源(如动态内存),则无需显式定义析构函数。
2025-05-12 12:22:02
126
原创 C++:流插入、流提取操作符
流插入和流提取操作符是两个我们常用的操作符。对于内置类型我们可以很方便的使用,不过对于自定义类型,要想这两个操作符的结果符合我们的预期,则需要我们自己根据自定义类型来重载这两个操作符。
2025-05-11 16:15:34
520
原创 C++:友元
友元机制在C++中提供了一种突破类封装的方式,允许外部函数或类访问类的私有和保护成员。友元函数和友元类虽然在某些情况下提供了便利,但过度使用会增加类之间的耦合度,破坏封装性,因此应谨慎使用。友元函数可以访问类的私有成员,但不是类的成员函数,且不能用const修饰。友元类的所有成员函数都可以访问另一个类的非公有成员,但友元关系是单向的,不具有传递性和继承性。合理使用友元可以提高代码的灵活性,但需注意其对封装性的影响。
2025-05-11 16:13:22
215
原创 C++:this指针
在C++中,类的成员函数实际上隐含了一个额外的参数——this指针,它指向调用该函数的对象。例如,date类中的成员函数void f(int i)在编译器内部会被转换为void f(date* this, int i)。当我们调用i.f(9)时,编译器会将其解释为i.f(&i, 9),将对象的地址传递给this指针。this指针是一个关键字,通常存储在栈帧中,但在某些编译器(如VS)中可能通过寄存器传递。虽然不能在函数定义中显式写出this指针,但可以在函数内部使用this->来访问成员变量。
2025-05-10 16:18:09
241
原创 pta-java-6-3 可比较的几何类(抽象类与接口)
通过继承和多态的学习,同学们熟悉了GeometricObject类,现在用抽象类的观点,修改GeometricObject类以实现Comparable接口,且在GeometricObject类中定义一个静态方法:求两个GeometricObject对象中较大者。此题提交时将会附加下述代码到被提交的Java程序末尾。
2024-10-27 15:16:49
215
3
原创 Java-类中方法的调用
这题选择E,解释是不能通过空引用调用equals方法,于是我产生的一个疑问,它的意思是不能通过空引用调用所有方法还是只是特定的一些方法呢?可以发现,可以通过空引用调用公有静态方法,而不可以通过其调用公有非静态方法,其原因是静态方法是属于类的,而非静态方法是属于具体的实例的。测试类先是通过空引用调用公有静态方法,然后再调用了公有非静态方法。这篇博客意在讨论我在做题时产生的一个疑问。先创建了一下简单的类。
2024-10-27 14:37:49
212
1
原创 pta-java-6-2 创建一个直角三角形类实现IShape接口
创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。interface IShape {// 接口// 抽象方法 求面积// 抽象方法 求周长其中a和b都是直角三角形的两条直角边。
2024-10-24 16:17:08
263
4
原创 pta-java-6-1 jmu-Java-04面向对象进阶-01-接口-匿名内部类ActionListener
调用MyStarter对象的。
2024-10-24 16:15:20
354
1
原创 pta-java-7-7 正方形类
定义类Main,并在main方法中, 1.首先创建正方形对象s1,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出2.创建正方形对象s2,并通过键盘输入s2对象的边的值,然后通过getEdge()方法输出edge的值,然后调用getArea方法求出s1的面积并输出。
2024-10-22 22:26:36
276
原创 pta-java-7-6 学生类设计
设计一个类Student,并在Main类中生成Student类对象进行测试1.对于Student类,设计私有属性name和age,并为每一个成员变量name和age设计其setXXX()和getXXX()方法,并对于setAge方法,如果age被赋值为<=6,则age值为7,其他为参数值。2.对于Student类,设计无参构造方法,在构造方法中为age赋值为7,name赋值为“无名" 并添加语句System.out.println("无参构造方法");
2024-10-22 22:20:03
544
原创 pta-6-8 快递计价器
现需要编写一个简易快递计价程序。具体来说:1、快递类Express,其包含一个属性int weight表示快递重量(单位为kg),一个方法用于返回快递重量和一个getTotal()用于计算快递运费。2、两个类继承Express,分别是:(a)顺路快递SLExpress:计价规则为首重(1kg)12元,每增加1kg费用加2元。(b)地地快递DDExpress:计价规则为首重(1kg)5元,每增加1kg费用加1元。
2024-10-20 08:33:23
453
原创 pta-6-7 职工工资-继承-bk
有一个Worker类,有以下属性和方法:(1)姓名String name和小时工资double rate(2)构造方法:带两个输入参数:工人的姓名和小时工资。(3)小时工资的get/set方法Worker类和主类代码已经给出,你需要设计Worker的子类:HourlyWorker和SalariedWorker。两个子类都重写继承的方法pay(int hour)来计算工人的周薪:HourlyWorker计时工按实际工时支付每小时工资,超过40小时的加班费为双倍工资。
2024-10-20 08:31:30
393
原创 pta-6-5 图书和音像租赁
图书和音像店提供出租服务,包括图书和DVD的出租。图书包括书名(String,一个词表示)和价格(double),DVD包括片名(String,一个词表示)。它们都是按天出租,但租金计算方式却不同,图书的日租金为图书价格的1%,DVD的日租金为固定的1元。构造图书和DVD类的继承体系,它们均继承自Media类,且提供方法getDailyRent()返回日租金,构造音像店类MediaShop,提供静态函数double calculateRent(Media[] medias, int days)。
2024-10-19 10:27:23
505
原创 pta-6-4 从抽象类shape类扩展出一个圆形类Circle
请从下列的抽象类shape类扩展出一个圆形类Circle,这个类圆形的半径radius作为私有成员,类中应包含初始化半径的构造方法。public abstract class shape {// 抽象类主类从键盘输入圆形的半径值,创建一个圆形对象,然后输出圆形的面积和周长。保留4位小数。圆形类名Circle。
2024-10-18 10:52:44
424
原创 pta-6-2 Book类的设计
该类有 四个私有属性分别是书籍名称价格作者出版年份,以及相应的set 与get方法;该类有一个含有四个参数的构造方法,这四个参数依次是书籍名称价格作者出版年份。
2024-10-17 09:00:28
317
2
原创 pta-6-1 设计一个矩形类Rectangle
设计一个名为Rectangle的类表示矩形。这个类包括:两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.一个无参构造方法。一个为width和height指定值的矩形构造方法。一个名为getArea()的方法返回这个矩形的面积。一个名为getPerimeter()的方法返回这个矩形的周长。
2024-10-17 08:56:23
703
原创 pta-7-4 定义类与创建对象
定义一个类Person,定义name和age属性,定义有参的构造方法对name和age进行初始化。在测试类中创建该类的2个对象,姓名、年龄分别为lili、19和lucy、20,在屏幕打印出2个对象的姓名和年龄。
2024-10-16 22:07:03
457
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人