- 博客(17)
- 收藏
- 关注
原创 override的作用
在定义虚函数时,使用virtual关键字将该函数声明为虚函数,并在子类中通过关键字virtual来重写基类中的虚函数。但如果在子类中重写虚函数时,不小心改变了函数签名(比如忘记加const或者参数类型和个数有所改变等),则这个虚函数不再能够像预期那样与基类的虚函数形成“覆盖”关系,导致运行时多态失效。它显式地表示子类中的虚函数是对父类函数的重写,如果子类中的virtual函数的函数签名与父类中的virtual函数的函数签名不匹配,则编译器会提示错误信息,提醒我们修改代码。
2023-05-24 15:04:59
369
原创 基类的指针
根据不同的实例类型,进行了不同的计算,最终输出圆的面积和矩形的面积。需要注意的是,基类指针在使用时需要注意记得用虚函数实现多态,即将基类函数声明为虚函数,并在派生类中进行正确的重载。否则,基类指针只能访问基类中的成员函数和数据成员,不能访问子类的成员函数和数据成员,失去多态性的优势。由于子类可以继承基类的成员函数和数据成员,因此这个指针可以访问基类和子类共有的成员函数和数据成员,但不能访问子类独有的成员函数和数据成员。基类的指针指向它派生出来的子类实例时,可以用这个指针来操作这个子类实例。
2023-05-24 14:53:12
567
原创 chatgpt教我虚函数
然后使用a->f()调用f函数,虽然a是基类A的指针,但因为f函数被声明为虚函数,所以在运行时调用了派生类B的函数f,最终输出 B::f()。虚函数指的是在基类中使用virtual关键字声明的成员函数,它允许在派生类中重载这个函数,即用派生类中的同名函数覆盖基类中的函数。C++中,如果函数不被声明为虚函数,则在使用基类的指针或引用调用该函数时,始终调用基类中的函数。这里的A::f()表示调用基类A中的f函数,使用作用域分辨符(::)和基类的函数名来调用基类的函数。
2023-05-22 17:57:37
135
原创 cv::Mat::convertTo();cv::subtract();cv::Scalar();cv::divide()
具体来说,代码中使用cv::Scalar(0.485, 0.456, 0.406)表示三个通道的均值,然后将其作为参数传递给cv::subtract()函数,对blob矩阵中的每个元素进行减法操作。具体来说,代码中使用cv::Scalar(0.229, 0.224, 0.225)表示三个通道的标准差,然后将其作为参数传递给cv::divide()函数,对blob矩阵中的每个元素进行除法操作。在这段代码中,cv::Scalar()函数被用于创建一个三通道的标量值,用于进行均值减法操作。
2023-05-19 18:02:00
490
原创 std::ifstream是C++标准库中的一个输入文件流类,它提供了一组函数来读取文件中的数据
std::ios::trunc:截断文件,即删除文件中的所有数据。- std::ios::binary:以二进制模式打开文件。- std::ios::ate:将文件指针定位到文件末尾。- std::ios::out:以写入模式打开文件。- std::ios::app:在文件末尾追加数据。- std::ios::in:以读取模式打开文件。
2023-05-19 16:28:48
1175
原创 一些c++ std::命名空间语法问题
因此,我们通常会使用std命名空间来引用标准库函数和对象。具体来说,我们使用了char*类型的指针来代替std::string类型的对象,使用了FILE*类型的指针来代替std::ifstream类型的对象,使用了fgets()函数来代替std::getline()函数,使用了strcat()函数来代替std::vector类型的向量。这样,当我们使用标准库函数和对象时,就可以直接使用std::前缀来指定它们所在的命名空间,例如std::cout、std::string、std::vector等等。
2023-05-19 16:27:04
169
原创 C++中::的作用
双冒号(::),也被称为作用域解析运算符,是C++编程语言中的一个符号,用于访问某个类、命名空间或全局作用域中的成员。当使用不同命名空间或作用域中的对象或成员时,可能会出现名称冲突的情况。在C++中,类的静态成员可以直接通过类名访问,也可以通过类的对象访问。
2023-05-18 17:20:53
403
原创 C++中noexcept的作用
需要注意的是,如果标记为noexcept的函数在运行时仍抛出异常,则程序会立即终止,并调用std::terminate()函数进行异常处理。由于标记为noexcept的函数不会抛出异常,在使用该函数的代码中,可以更加自信地使用不带RAII(资源获取即初始化)的代码,以提高代码的异常安全性。标记为noexcept的函数可以使编译器在优化代码中利用更多的技术,例如函数内联、跳过异常处理代码等,从而提高程序的效率。对于标记为noexcept的函数,编译器可以将其用作常量表达式的计算,从而提高程序的性能。
2023-05-18 17:16:46
548
1
原创 解决 fatal: Not a git repository (or any of the parent directories): .git
解决 fatal: Not a git repository (or any of the parent directories): .git
2022-07-06 14:07:07
1053
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人