C++ static 函数的问题

近日读 C++ primer 中static 一章 , 有这么一句话,

“静态成员函数的声明除了在类体中的函数声明前加上关键字static 以及不能声明为
const 或volatile 之外与非静态成员函数相同出现在类体外的函数定义不能指定关键字
static”

为什么不能在类体外指定关键字static , 这样设计的目的是什么,有什么用处?

2#

怎么说呢, 这是一个作用域的问题!
成员函数的作用域是类域, 而在类体外加上static不是表示静态函数,表示的是函数拥有文件域(file scope)
而类域是小于文件域,强行把类域扩大到文件域,就会出错。
如下代码:
class CA {
public:
static void display(void);
};

static void CA::display(void) { // ERROR!
cout << "Hello CA!" << endl;
}

int main(int argc, char* argv[]) {
CA::display(); 
}

// error C2724: 'CA::display' : 'static' should not be used on member functions defined at file scope

转载于:https://www.cnblogs.com/kira2will/p/4121241.html

C++ 不能在类体外指定关键字static相关推荐

  1. 一、什么是类,一些关键字

    一.类概念: 1.1.类是虚的.类不占内存,对象才是实际存在的.对象占用内存. 1.2.空间分配: 1.2.1.一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区. 自动变量一般 ...

  2. [面试] C++中的static关键字 (static 上镜率非常高!)

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 一.面向过程设计中的st ...

  3. Java-Day11 面向对象遍程的入门 (类属性的默认值、构造方法、类的成员、static关键字、类的成员加载顺序、Java(权限)访问修饰符)

    目录 1. 类的属性的默认值问题 2. 构造方法(Constructor) 3. 类的成员 3.1 类的成员之一:属性 3.2 UML类图 4. static关键字 5. 类的成员加载(运行)顺序 6 ...

  4. Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类

    Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...

  5. C++类的静态数据成员-关键字static

    C++类的静态数据成员-关键字static 定义:用static关键字声明的数据成员称为静态数据成员. 每个类只有一个存储单元,静态数据成员为该类的所有对象共有,不属于某个对象.静态数据成员的初始化必 ...

  6. C++ 类模板三(类模版中的static关键字)

    //类模版中的static关键字 #include<iostream> using namespace std;/* 类模板本质上是c++编译器根据类型参数创建了不同的类, c++编译器在 ...

  7. 7 面向对象(成员变量和局部变量的区别,类作为形式参数的问题,匿名对象,封装,private关键字,this关键字,构造方法,类的初始化过程,static关键字)

    1:成员变量和局部变量的区别(理解) (1)在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 (2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 (3)生命周期不同 ...

  8. Java类中this关键字和static关键字的用法详解

    今天给大家总结介绍一下Java类中this关键字和static关键字的用法. 文章目录 this关键字用法: 1:修饰属性,表示调用类中的成员变量 2:this修饰方法 3:this表示当前对象的引用 ...

  9. 学习-Java类和对象之static关键字之求圆环面积和周长

    任务描述 本关任务:已知圆环的大圆半径 R 和 小圆半径 r 的长度分别为 32.0 和 10.0,求该圆环的面积和周长. 圆环面积公式为:S=π(R2−r2): 圆环周长公式为:C=2π(R+r). ...

  10. Java类的继承关键字_Java的第八天(类的继承、super关键字的使用、方法的重写)...

    39.类的继承java 描述类的时候,咱们若是发现有几个类有重复的属性和方法,咱们就能够采用继承的方法来设计ide 使用extends关键字来继承this 语法:设计 class 子类 extends ...

最新文章

  1. error: device not found - waiting for device -
  2. centos安装JDK与Tomcat
  3. 关于dismissViewControllerAnimated值得注意的一点(deinit)
  4. Hacking techniques automation
  5. 限时团购,6.5折:《C# 7.0 核心技术指南》
  6. jmu-Java-07多线程-同步访问 (10分)
  7. 基于vue的video播放组件
  8. 网络学习笔记(一):TCP连接的建立与关闭
  9. 【渝粤教育】国家开放大学2018年春季 8618-22T燃气行业规范 参考试题
  10. xencenter如何安装Centos7虚拟机系统
  11. 利用masm32输出PE文件头的基本属性
  12. PYTHON 顺丰快递分拣小程序-极简9行代码实现分拣
  13. ubuntu 安装 xv 图像查看软件
  14. 一般个域名可以有几个IP地址,IP地址可以绑定几个域名呢
  15. 图灵学院:淘宝大秒系统设计详解
  16. 供应博思特posital增量型编码器
  17. 终端/SSH/Telnet ConnectBot v1.7.1中文版
  18. Web安全之文件上传漏洞
  19. As-Projective-As-Possible Image Stitching with Moving DLT阅读笔记
  20. SuperMap iClient for JavaScript常见问题解答集锦(十二)

热门文章

  1. 《JavaScript高级程序设计》阅读笔记(十五):浏览器中的JavaScript
  2. 1.maven下仅shiro框架对shiro的测试使用
  3. ddwrt开启USB硬盘
  4. [python 译] 基于面向对象的分析和设计
  5. javaweb学习总结四——Http协议
  6. 构建之法:第八次心得
  7. WebServic调用天气预报服务
  8. 2016021902 - linux解压缩命令
  9. 使用Hibernate SQLQuery(转)
  10. mysql表情符号_emoji等表情符号存mysql的方法