我们知道,类的常成员函数 尾部 加了 const 关键字,而且,声明 和 定义处 必须 都加 const 关键字。

举个例子说明:

//a.h

class A

{

public:

A(){}

~A(){}

void display() const;

};

//a.cpp

#include "a.h"

#include <iostream>

void A::display() const

{

std::cout << "haha" << "\n";

}

此文,主要说明 为什么声明 和 定义处必须 都加的问题,其他若有看不懂的地方,建议多翻翻书。

答: 我们知道,函数的声明 和 定义 必须匹配,而 如下两个函数是 2个 不同的函数,

举例:

void display();

void display() const;

若在 类的 成员函数 声明处 尾部加了 const,为了匹配, 类外定义处也必须加 const 关键字!!!

总结: 这个问题的回答,一句话,为了函数匹配,所以,两处都加 const(常成员函数),或者 两处都不加const(非常成员函数)。

关于 类的常成员函数 声明和定义处 都需要加 const的原因相关推荐

  1. C++57个入门知识点_40 常成员函数(用于定义不可修改类内部成员变量的函数,一般用来修饰Get函数;常成员函数this指针:const T* const;常成员函数内部变量修改方法:强转/关键字)

    前面我们已经学习了C++中重要的知识点,特别是虚函数可能会有些懵逼,但是需要我们在实践中不断的理解和尝试,写代码是进步最快的方式,接下来将会介绍一些简单但很重要的知识点,本篇介绍常成员函数. 总结: ...

  2. C++的成员函数声明与定义 —— 类外定义成员函数以及inline函数

    作者原文:https://www.cnblogs.com/wuchanming/p/4061654.html 类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它 ...

  3. 常类型的使用 常成员函数(设计一个日期类和时间)

    普通成员函数可以访问常数据成员但是不能改变常数据成员的值: 普通成员函数不可以访问常对象的数据成员且不能改变常对象的数据成员的值: 常成员函数可以访问普通数据成员但是不可以改变普通数据成员的值: 常成 ...

  4. [c++] 常成员函数

    1.常成员函数声明: const成员函数也就是常成员函数,它的声明形式: 返回类型 成员函数名(参数表) const : 例如: int function(int x) const : 易混淆的地方: ...

  5. C++中常对象与常成员函数以及this与成员函数的联系与区别

    class A { }; /* 小记:对于const声明的对象,针对哪个变哪个不变得问题,实际上就是const后的整体不变 e.g.: const int *A; 或 int const *A; / ...

  6. C++常对象,常变量,常成员函数详解(含添加内容)

    既要使数据能在一定范围内共享,又要保证它不被任意修改,可使用const. ·        用const修饰的声明数据成员称为常数据成员 ·        用const修饰的声明成员函数称为常成员函数 ...

  7. C++找对象的季节——常成员函数(点和对称点)

    又到了一周一次的发博文时间了,废话不多说,马上开始: #include<iostream> #include<cmath> using namespace std; class ...

  8. 类中成员函数声明后面的const的含义

    这个const一般是对类中成员函数属性的声明,但这个声明怪怪的,只能放在函数声明的尾部,大概是因为其它地方都已经被占用了.这个声明表示这个函数不会修改类中的任何数据成员.如果在编写const成员函数时 ...

  9. 把类的成员函数声明为友元函数,但不能访问私有成员的原因和解决办法

    定义类X,类Y,在类X中声明类Y的成员函数g()为类X的友元函数 常见的几种错误写法及原因: 错误写法1 class Y; class X {public:X(int i) :i(i) {}frien ...

  10. 类中的常成员函数的使用和定义

    如果只对对象进行读操作,则该成员函数可以设计成常成员函数.设计成常成员函数的好处是:让使用者一目了然地知道该成员函数不会改变对象的值. 常成员函数的声明和定义在形式上必须一致,即在函数形参列表的右括号 ...

最新文章

  1. 发布开源库的踩坑经历:jitpack.io
  2. foxmail 服务器备份 立刻删除_PC整机备份与还原教程 Active Backup for Business
  3. aes加密算法_令你的文件安全有了新方法AES-256-GCM加密网站免费用
  4. matlab第十章实验,matlab 图像函数以及运用(第十章)
  5. SQL server 使用自定义函数以及游标
  6. POJ NOI0105-41 数字统计
  7. 别因为要学的太多反而压垮自己
  8. 【运维技术】数据库主从同步搭建
  9. TCP/UDP协议简要梳理
  10. 职业培训学校计算机培训计划,职业技能学校关于计算机应用一级MS-Office培训开班计划.doc...
  11. 毕向东java笔记ppt,毕向东java学习笔记.doc
  12. 2dpca matlab程序,[转载]人脸识别-2dpca之Matlab程序
  13. 计算机的二三事——软件篇
  14. 自问自答学ArrayList,看这篇就够了,详解问答
  15. 程序员吐槽_程序员在地铁上写代码被路人吐槽:有什么好装的!网友评论炸锅了!...
  16. Spring 实战(第 5 版)
  17. 基于知识图谱的多模内容创作技术
  18. 学习Java主要的就业方向有哪些呢?
  19. linux Hadoop环境变量安装及应用
  20. 钉钉开发平台 —H5微应用-- 扫条形码、二维码 api 示例

热门文章

  1. 单片机学习笔记————51单片机实现两片联级74HC595驱动16个LED灯(把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式)
  2. 问道娃娃进阶技能学习方法及技能效果图文介绍
  3. MATLAB连接MYSQL搞数据
  4. 定量库存控制模型_定量订货库存管理模型分析及应用
  5. Redis连接报错【redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password 】
  6. 基于51单片机的LCD12864游戏机设计
  7. CTF-代码审计(2)
  8. 59% 的程序员曾担心自己猝死!
  9. 零基础Matlab Note9--离散数据绘图set(gca, )
  10. 计算机ppt制作教案,《电脑幻灯我来秀—制作个性母版》教学设计