static成员函数和static成员

C++的静态成员是和类关联的,它属于某个类,但是不属于某个特定的对象。静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。

但是可以通过对象调用静态成员函数,虽然我们一般不会这么做:

 1 class Point
 2 {
 3 public:
 4     void init()
 5     {
 6     }
 7     static void output()
 8     {
 9     }
10 };
11
12 void main()
13 {
14     Point pt;
15     pt.init();   //OK
16     pt.output();  //OK
17 } 

在类外实现时不加static关键字,只有在类内声明时才加static。

我们一般会用类名直接调用静态成员函数:

1 Point::output();    //OK 这是更常见的调用方式

静态成员函数中不能调用非静态成员。因为静态成员函数的作用就是为了处理静态成员。而静态成员和静态成员函数是没有this指针的,但是非静态成员是有this指针的,所以static member function不能调用非静态成员。

为什么静态成员和静态成员函数没有this指针?

this指针的值是当前被调用的成员函数所在的对象的起始地址,而静态成员只属于类,不属于对象,也就没有this指针了。

原文地址:https://www.cnblogs.com/howo/p/8476375.html

时间: 2024-11-13 08:07:36

static成员函数和static成员的相关文章

mutable用于修改const成员函数中的成员变量

http://no001.blog.51cto.com/1142339/389840/ mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词. 在C++中,mutable也是为了突破const的限制而设置的.被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中. 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的.但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,

【转】C++ const成员变量和成员函数(常成员函数)

转:http://c.biancheng.net/view/2230.html 在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字.初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表,这点在前面已经讲到了,请猛击<C++初始化列表>回顾. const成员函数(常成员函数) const 成员函

static成员函数和static 成员变量的作用

static 成员只属于类不属于具体的对象,1.当类的某些属性需要所有对象都能够统一公用一分内存的时候,就可以定于成静态成员变量2.静态成员函数可以直接使用类去调用,所有当需要查看类的静态成员变量属性的时候可以直接通过静态成员函数去调用,而不需要具体对象去调用 3.因为static 成员属于类,而不属于具体的对象,所有static成员函数不能使用this指针 原文地址:http://blog.51cto.com/wenxuehui/2089850

C/C++ 类成员函数指针 类成员数据指针

普通函数指针:  "return_type (*ptr_name)(para_types) " 类成员函数指针: "return_type (class_name::*ptr_name)(para_types)" 类数据成员指针: "type class_name::* ptr_name"; C/C++: 1 class Demo 2 { 3 public: 4 Demo():data(100) 5 { 6 7 } 8 int data; 9 i

类的成员函数和普通成员函数的区别

区别1: 静态成员函数实际上是一个全局函数,不依赖一个类的对象. 而属于类,不创建对象也可调用,静态成员函数没有this指针. 普通成员函数依赖一个类的对象,也就是它有一个隐藏的调用参数(this)指针,必须指向一个类的对象. 区别2: 静态函数只能访问类中的静态成员变量: 区别3:: 如果成员函数想作为回调函数来使用,如创建线程等,一般只能将它定义为静态成员函数才行. 版权声明:本文为博主原创文章,未经博主允许不得转载.

C++类的成员函数(在类外定义成员函数、inline成员函数)

类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:它是属于一个类的成员,出现在类体中.它可以被指定为private(私有的).public (公用的)或protected(受保护的). 在使用类函数时,要注意调用它的权限(它能否被调用)以及它的作用域(函数能使用什么范围中的数据和函数).例如私有的成员函数只能被本类中的其它成员函数所调用,而不能被类外调用.成员函数可以访问本类中任何成员(包括私有的和公用的),可

Static成员变量,static成员函数解析

最近看Effective C++经常看到一些和static相关的内容,希望综合整理一下,如果有不全,还望补充: 1 类中的Static成员变量 static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联! 一般为类申请一个对象,是对类中成员变量申请一个副本,各个对象之间的成员变量和函数互不影响,但是static成员变量不是在栈空间而是在静态存储区,所有的类对象共享static变量.静态成员是可以独立访问的

const成员函数,内联函数,友元函数,static成员

原文链接:https://blog.csdn.net/qq_38646470/article/details/79795538专栏链接:https://blog.csdn.net/column/details/20026.html[TOC]#1.const成员函数const修饰成员函数在成员函数后面加const,const修饰this指针所指向的对象,也就是保证调用这个const成员函数的对象在函数内不会被改变. class Date { public : void Display () { c

【C/C++学院】0819-/类的成员函数与const-mutable /构造与析构/拷贝构造deletedefault以及深浅拷贝/静态成员函数成员变量类在内存的存储默认参数/友元类以及友元函数

类的成员函数与const-mutable 成员函数 Fushu.h #pragma once #include <iostream> class fushu { public: int x; int y; public: fushu(); ~fushu(); void show(); inline void showall(int x, int y);//显式内联 void setxy(int x, int y);//编译器优化,默认隐式内联 void show(int x, int y);