C++笔记
码龄-1天
这个作者很懒,什么都没留下…
展开
-
override的作用
在定义虚函数时,使用virtual关键字将该函数声明为虚函数,并在子类中通过关键字virtual来重写基类中的虚函数。但如果在子类中重写虚函数时,不小心改变了函数签名(比如忘记加const或者参数类型和个数有所改变等),则这个虚函数不再能够像预期那样与基类的虚函数形成“覆盖”关系,导致运行时多态失效。它显式地表示子类中的虚函数是对父类函数的重写,如果子类中的virtual函数的函数签名与父类中的virtual函数的函数签名不匹配,则编译器会提示错误信息,提醒我们修改代码。原创 2023-05-24 15:04:59 · 331 阅读 · 0 评论 -
基类的指针
根据不同的实例类型,进行了不同的计算,最终输出圆的面积和矩形的面积。需要注意的是,基类指针在使用时需要注意记得用虚函数实现多态,即将基类函数声明为虚函数,并在派生类中进行正确的重载。否则,基类指针只能访问基类中的成员函数和数据成员,不能访问子类的成员函数和数据成员,失去多态性的优势。由于子类可以继承基类的成员函数和数据成员,因此这个指针可以访问基类和子类共有的成员函数和数据成员,但不能访问子类独有的成员函数和数据成员。基类的指针指向它派生出来的子类实例时,可以用这个指针来操作这个子类实例。原创 2023-05-24 14:53:12 · 528 阅读 · 0 评论 -
chatgpt教我虚函数
然后使用a->f()调用f函数,虽然a是基类A的指针,但因为f函数被声明为虚函数,所以在运行时调用了派生类B的函数f,最终输出 B::f()。虚函数指的是在基类中使用virtual关键字声明的成员函数,它允许在派生类中重载这个函数,即用派生类中的同名函数覆盖基类中的函数。C++中,如果函数不被声明为虚函数,则在使用基类的指针或引用调用该函数时,始终调用基类中的函数。这里的A::f()表示调用基类A中的f函数,使用作用域分辨符(::)和基类的函数名来调用基类的函数。原创 2023-05-22 17:57:37 · 120 阅读 · 0 评论 -
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 · 447 阅读 · 0 评论 -
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 · 1049 阅读 · 0 评论 -
一些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 · 135 阅读 · 0 评论 -
C++中::的作用
双冒号(::),也被称为作用域解析运算符,是C++编程语言中的一个符号,用于访问某个类、命名空间或全局作用域中的成员。当使用不同命名空间或作用域中的对象或成员时,可能会出现名称冲突的情况。在C++中,类的静态成员可以直接通过类名访问,也可以通过类的对象访问。原创 2023-05-18 17:20:53 · 358 阅读 · 0 评论