自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 zerotier-moon-docker-android-window-openwrt

其中/home/zerotier是配置文件路径,-4后面的1.1.1.1是自己服务器的IP地址,记得开放9993端口。然后将moon服务器将生成的0000000xxxx.moon复制到/etc/zerotier/moons.d。其中XXXXXX为你zerotier的Network ID,记得去zerotier的群组里放行。这两个添加moon服务器的方法在moon的使用上无区别,看个人喜好。如果使用自建moon服务器,初始化Zerotier的命令略有差异。好不容易配的,害怕下次忘了,做个笔记。

2023-11-27 20:17:36 533

原创 2023吉林大学c++面向对象编程上机实验第三题

设计摄像机类,并请根据下列不同的功能要求,采用不同的继承方式,设计行车记录仪类,并添加测试代码,体验不同继承方式下的成员访问属性。(4)为我公司建立一个多态的产品类层次结构,使用抽象类,测试时,创建一个基类指针的容器,通过基类指针调用虚函数,体验多态。(3)将摄像机类和行车记录仪类功能相近的函数(如拍摄、编码等功能函数)设为同名函数,增加相应测试代码,体验同名函数覆盖。(1)采用组合方式设计行车记录仪类,增加相应测试代码,体验继承和组合的关系。行车记录仪用户可以操作行车记录仪的操作菜单和摄像机的摄像功能。

2023-05-17 17:46:09 999 1

原创 2023吉林大学C++面向对象程序编程上机实验第一题

第一题:对如下多项式编写类定义: + + +…+ a0+a1x+a2x2+…+anxn其中,n为多项式的次数。完成如下功能:(1) 可存储任意大的多项式(提示:用什么数据结构呢?)。(2) 定义构造函数、析构函数、拷贝构造函数。(3) 包含一个static成员存储定义的多项式的数量。(4) 定义一个成员函数输出多项式。(可参照-x^4-6x^3+5格式输出)(5) 定义一个成员函数计算多项式的值。(6) 写main函数测试类的功能。(7) 采用多文件实现。考虑:哪些成员函数可以声明为

2023-05-17 17:44:18 1160

原创 Debug--E1790--C++ 无法引用 的默认构造函数 -- 它是已删除的函数

在这个例子中,Camera 类中只定义了一个带参数的构造函数,因此编译器将不会自动生成默认构造函数。我们可以使用 default 关键字来声明一个默认构造函数,这样在需要创建一个未初始化的 Camera 对象时,我们就可以使用这个默认构造函数。当我们在类中显式地声明了任何构造函数(包括拷贝构造函数、移动构造函数或其它有参构造函数)时,C++ 编译器将不再自动生成默认构造函数。这段代码是 Camera 类的默认构造函数的声明,它使用了 C++11 的 default 关键字来声明默认构造函数。

2023-05-16 10:39:56 603

原创 c++学习笔记

Car类表示汽车,它通过嵌入一个Engine类的实例对象来表示它的引擎。Car类也有一个成员函数start,它先调用嵌入的Engine对象的start函数来启动引擎,然后再输出一条信息表示汽车启动。组合的一个主要优点是它可以将复杂的问题分解为更小的问题,然后将这些小问题分配给不同的类来处理。此外,组合还可以通过简单地替换一个组合部件来改变对象的行为,而不必对整个对象进行更改。在面向对象编程中,组合是一种将多个对象组合成一个更大的对象的方式,这个更大的对象具有多个不同的部分,每个部分由一个独立的对象组成。

2023-05-15 20:16:46 68 1

原创 c++学习笔记--using(using std::cout;)

这段代码是一个using声明,它将Camera类中的setVideoQuality函数引入到当前作用域中,以便可以在不需要使用Camera作为前缀的情况下使用该函数。在这个例子中,我们使用"using"关键字将"cout"、"endl"和"sqrt"符号从它们各自的命名空间中引入到我们当前的作用域中。注意,在这种情况下,我们需要传递Camera对象作为函数的第一个参数。C++中的"using"关键字用于将一个符号引入到当前的作用域中,以便可以在不需要使用其命名空间限定符的情况下使用它。

2023-05-15 13:55:27 437 1

原创 C++学习笔记--inline

要将函数声明为内联函数,只需要在函数定义前加上inline关键字即可。需要注意的是,编译器并不一定会将所有声明为内联函数的函数都进行内联展开,因为它可能认为展开后的代码会变得过于庞大而影响程序的效率。在C++中,inline是一个关键字,用于向编译器建议将函数作为内联函数进行编译。内联函数是一种在编译时将函数体直接嵌入到调用该函数的代码中的函数。在上述示例中,add函数被声明为内联函数,并被调用了一次。由于这个函数是内联函数,编译器会将其函数体直接嵌入到调用它的代码中,从而避免了函数调用的开销。

2023-05-15 13:35:57 58

原创 C++学习笔记——override

当在派生类中重新定义一个函数时,如果该函数与基类中的同名函数签名一致(即函数名、参数列表和常属性相同),那么它就会自动覆盖基类中的函数。如果在Derived中的函数签名与Base中的foo函数不完全一致,或者Derived中没有覆盖Base中的foo函数,那么编译器会发出错误提示。// override基类函数。override是C++11引入的一个关键字,用于显式地指示一个成员函数(包括虚函数)覆盖了基类的同名函数。当前函数必须是虚函数或者是覆盖了虚函数的函数。当前函数必须出现在基类的函数声明中。

2023-05-15 13:34:40 759 1

原创 C++学习笔记--工厂模式

工厂方法模式:工厂方法模式是将工厂类抽象出来,每个具体产品类都对应一个具体工厂类,工厂类负责创建与之对应的产品对象。工厂方法模式的优点是可以支持扩展,每个产品类都有一个与之对应的工厂类,新产品的加入不会影响已有产品的代码。工厂类:创建产品对象的工厂,它包含一个创建产品的方法,该方法可以根据传入的参数来创建不同的产品对象。具体产品类:实现抽象产品类定义的接口,由工厂类创建,每个具体产品类都对应一个具体工厂类。抽象工厂:定义创建产品的接口,包含一个或多个工厂方法,用于创建不同类型的产品。

2023-05-15 13:31:54 57

原创 可以通过类名来访问,也可以通过类的实例来访问--静态函数

在上述代码中,MyClass类定义了一个静态成员变量count和一个静态成员函数printCount,printCount函数可以直接通过类名来访问,它输出了静态成员变量count的值,用于统计MyClass类实例的个数。在main函数中,我们实例化了两个MyClass对象,并分别调用了printCount函数,可以看到每次调用之后,count的值都会增加,说明静态成员变量在所有实例之间是共享的。在C++中,静态函数是一种特殊的成员函数,它属于类而不是类的实例,因此可以在没有实例化对象的情况下直接使用。

2023-05-15 13:29:20 405 1

原创 C++学习笔记——虚函数

定义虚函数的主要目的是实现多态,也就是在基类和派生类之间实现动态绑定,使得同名的虚函数在不同的对象上调用时,能够根据对象的实际类型来动态决定调用哪个函数。在上述代码中,Animal类的makeSound()函数被声明为虚函数,它的子类Cat和Dog分别重写了这个函数,通过定义Animal指针指向不同的子类对象,并调用makeSound()函数,实现了多态的效果。虚函数可以被纯虚函数所代替,纯虚函数只有声明而没有实现,纯虚函数用来定义接口,派生类必须要实现纯虚函数才能被实例化。// 输出 Meow!

2023-05-15 13:28:21 61

原创 C++学习笔记———多态

当我们定义一个Animal指针指向Cat或Dog的对象时,调用makeSound()函数时,会根据实际对象类型的不同而调用不同的函数。在C++中,当一个成员函数被声明为虚函数时,它就可以被子类重写,即在子类中定义与父类相同的函数名、参数列表和返回类型的函数,然后在子类对象上调用该函数时,会根据实际对象类型的不同而调用不同的函数。上述代码中,animal1指向一个Cat对象,animal2指向一个Dog对象,但在调用makeSound()函数时,它们分别输出了不同的结果,这就是多态的表现。

2023-05-15 13:26:13 99

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除