学习:类和对象——静态成员变量和函数
Posted zpchcbd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习:类和对象——静态成员变量和函数相关的知识,希望对你有一定的参考价值。
静态成员:
静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员
静态成员分为: 静态成员变量和静态成员函数,其中这两个特点如下
静态成员变量:
特点1、所有对象共享同一份数据
特点2、在编译阶段分配内存
特点3、类内声明,类外初始化
静态成员函数:
特点1、所有对象共享同一个函数
特点2、静态成员函数只能访问静态成员变量
静态成员变量:
示例代码:
#include<iostream>
#include<string>
using namespace std;
class Person {
public:
Person() {
cout << this->b << endl;
}
public:
static int a; //定义一个共享静态成员变量
private:
static int b; //定义一个私有静态成员变量
};
int Person::a = 1;
int Person::b = 2;
void test01() {
Person p1;
cout << p1.a << endl; // 生成p1的对象 直接访问不可以,因为没有在外部对静态成员进行初始化
//cout << p1.b << endl; //无法进行访问,因为静态变量b是私有的
//由于静态成员变量是存在于全局区的,所以我们可以直接通过类名进行访问
cout << Person::a << endl;
//cout << Person::b << endl;
}
int main() {
test01();
system("pause");
return 0;
}
静态成员函数:
静态成员函数特点:
特点1、程序共享一个函数
特点2、静态成员函数只能访问静态成员变量
示例代码
#include<iostream>
#include<string>
using namespace std;
class Person {
public:
Person(int a) {
this->a = 10;
}
static void to_visit() { // 静态函数可以访问静态变量,但是无法访问类中的变量,原因也很好理解,无法区别到底是哪个对象的a成员变量
cout << "这是公共静态成员函数" << endl;
cout << a << endl;
}
public:
static int a;
private:
static void to_visit_s() { //同样的也有私有静态成员函数
cout << "这是私有静态成员函数" << endl;
}
};
int Person::a = 1;
int main() {
Person p1(10);
cout << p1.a << endl;
Person::to_visit();//同样也可以通过类名进行访问静态成员函数
p1.to_visit(); //通过对象访问静态成员函数
//Person::to_visit_s();
system("pause");
return 0;
}
以上是关于学习:类和对象——静态成员变量和函数的主要内容,如果未能解决你的问题,请参考以下文章