`
deepfuture
  • 浏览: 4400618 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80078
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70054
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103361
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285829
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15014
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67573
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32155
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45991
社区版块
存档分类
最新评论

基于const的重载

OS 
阅读更多

1、基于成员函数是否为const,可以重载一个成员函数,同样基于一个指针形参是否指向const,可以重载一个函数。

2、const对象只能使用const成员,非const对象可使用任一成员,但会更好的匹配非const版本

3、比如:

class Screen{

   public:

   Screen& display(std::ostream &os){

       do_display(os);return *this;

   }

   const Screen& display(std::ostream &os){

       do_display(os);return *this;

   }  

   private:

   vid do_display(std:sotream &os) const{os<<contents;} 

}

 

Screen myScreen(5,3);

const Screen blank(5,3);

 

myScreen优先调用非const版本display

blank只能调用const版本的display

0
3
分享到:
评论

相关推荐

    C++矩阵类的编写,基于运算符重载

    `C++矩阵类的编写,基于运算符重载`这个主题旨在教你如何利用C++的特性来创建一个高效的矩阵类,并通过运算符重载提供直观且易用的接口。以下是对这个主题的详细阐述: 首先,`MTX`类的设计应该包含矩阵的基本属性...

    实现操作符重载 实现操作符重载

    操作符重载是C++的多态性的一种表现形式,它基于函数重载的概念。在C++中,每个运算符都是一个函数,当我们对自定义类型进行运算时,编译器会自动寻找合适的操作符重载函数来执行运算。例如,我们可以为类的实例定义...

    数组类重载运算符 的实例

    我们将讨论标题中的"数组类重载运算符",并基于提供的文件名(Array.cpp、main.cpp、Array.h)来推测这是一个包含头文件、实现文件和主程序的简单项目。 首先,让我们了解什么是重载运算符。在C++中,我们可以为类...

    C运算符重载PPT课件.pptx

    以下内容基于这一假设进行展开。 #### 三、单目运算符重载 单目运算符通常只有一个操作数。例如,负号 `-` 和增减运算符 `++` 和 `--`。 ##### 1. 负号“-” **成员函数重载:** ```cpp class C { private: ...

    cpp_200715_重载_

    C++不会基于返回类型来区分重载,因此返回类型不能作为重载的依据。 下面是一个简单的C++重载示例,展示如何通过参数数量的差异来实现重载: ```cpp #include // 函数签名1:无参数 void print() { std::cout ;...

    TypeScript中的方法重载详解

    尽管实际的函数实现没有重载功能,但TypeScript的编译器会基于函数签名来检查调用的正确性,提供编译时的类型安全。因此,当我们使用`getMessage`函数时,编译器会根据传入的参数类型选择合适的签名,确保返回的结果...

    c++构造函数和析构函数,拷贝,重载

    下面将基于这段代码,详细介绍这些重要的知识点。 ### C++构造函数 构造函数是一种特殊的成员函数,它的主要任务是为新创建的对象初始化数据成员。在C++中,构造函数的名字必须与类名相同,并且没有返回类型。 ##...

    c++ 基本知识--重载函数(曹阳).pptx

    返回类型不能用来区分重载函数,因为函数调用是基于传递的参数,而不是期望的返回值。如果两个函数的参数列表完全相同,即使返回类型不同,也会被视为重复声明,导致编译错误。 3. **重载与作用域** 重载函数的...

    运算符重载

    下面我们将基于提供的代码片段来详细分析如何实现基本的运算符重载功能。 ##### 1. 类定义与成员变量 ```cpp class RN { private: int a, b; public: // 构造函数 RN(int x = 1, int y = 1) { a = x; b = y; } ...

    C++实现string类

    - `MyString operator+(const MyString& other) const`:重载`+`运算符,创建一个新的`MyString`对象,表示两个字符串的连接。 - `MyString& operator+=(const MyString& other)`:重载`+=`运算符,将`other`字符串...

    c++中用运算符重载实现两数组相加.docx

    C++语言中提供了运算符重载的机制,以便用户自定义运算符的行为,并且可以基于已有的运算符来定义新的运算符行为。在这个示例中,我们将演示如何使用运算符重载来实现两数组的相加操作。 首先,我们定义了一个名为...

    STL和运算符重载入门PPT

    Complex operator+(const Complex &c) const { return Complex(real + c.real, imag + c.imag); } }; ``` ### 八、模板的意义 - **优点**: - 减少代码重复:通过使用模板,可以编写一次性的通用函数或类,适用...

    C++的iostream标准库介绍以及对左移与右移运算符的重载.pdf

    "`实际上是调用了`ostream& operator(ostream &temp, const char* source)`这个重载函数,它将字符串写入输出流。由于返回的是流对象的引用,所以可以连续输出多个数据,如`cout , " !"`。 对于输入,`&gt;&gt;`运算符也...

    C++Primer笔记

    本笔记基于 C++ Primer 的学习笔记,涵盖了友元函数、操作符重载、运算符重载、using 声明和引用等多个知识点。 友元函数 友元函数是一种特殊的函数,它可以访问类的私有成员。通过让函数成为类的友元,赋予该函数...

    ObjectOrientedProgrammingUsingCOperatorOverloadingCLecture10.zip

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的概念,将数据和操作这些数据的方法封装在一起。在C++中,OOP包括类、对象、继承、多态、封装等核心概念。本讲座的重点是C++...

    基于MFC的简单的复数操作

    在本文中,我们将深入探讨如何在Microsoft Foundation Class ...但上述内容已经展示了如何基于MFC实现一个基础的复数操作程序。通过进一步学习MFC和C++编程,你可以扩展这个程序,使其具备更多功能,满足更复杂的需求。

    设计一个能够实现n×n矩阵操作的类(课程设计报告)

    ### 基于运算符重载的方阵类设计与实现 #### 1. 需求分析 在本课程设计任务中,我们被要求设计并实现一个支持n×n矩阵操作的类。该类应能处理不同阶数的方阵,并支持一系列的基本运算操作,包括但不限于加法、减法...

    基于C++的图书管理系统

    它的核心特性包括类、模板、异常处理、命名空间、内联函数、运算符重载等,这些都使得C++在构建复杂系统时具有强大的灵活性和可扩展性。 在设计图书管理系统时,首先需要定义数据结构来存储图书信息。这可能包括...

    babel-operator-overload-plugin:Babel插件,用于运算符重载

    Babel插件,用于操作员重载。 有一个简单的模板项目。 这是基于( 的 例子 以下代码将两个整数相加,然后相加两个点。 需要使用开头的指令来启用转换。 'babel-operator-overload-plugin enabled' class Point ...

Global site tag (gtag.js) - Google Analytics