4.3 初始化操作与静态成员

目录

4.3.1初始化列表

4.3.2 类对象作为类成员

4.3.3 静态成员

4.3.3.1静态成员变量

4.3.3.2静态成员函数


4.3.1初始化列表

C++提供了初始化列表语法,用来初始化属性

语法:构造函数():属性1(值1),属性2(值2)... {}

实例化一个对象的时候给他初始值。

#include<iostream>
#include<algorithm>
using namespace std;

class MyClass
{
public:
	//初始化列表初始化属性
	MyClass(int a,int b,string c):class_number(a),class_tele(b),class_name(c)
	{
	}

	~MyClass();

	int class_number;
	int class_tele;
	string class_name;
private:

};

void test01() {
	MyClass p(10,20,"hzh");
}

int main()
{
	test01();
    return 0;
}

4.3.2 类对象作为类成员

class A{};

class B{
    A a;
}

// 实例化对象B的时候系统实际上会先实例化A,析构函数的执行则相反

4.3.3 静态成员

静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员

静态成员分为:


4.3.3.1静态成员变量

  • 所有对象共享同一份数据。
  • 在编译阶段分配内存。
  • 类内声明,类外初始化·
#include<iostream>
#include<algorithm>
using namespace std;

class MyClass
{
public:
	/*静态成员变量的特点
		1.所有对象共享同一份数据。
		2.在编译阶段分配内存。
		3.
	*/
	static int class_number;
	int class_tele;
	string class_name;
private:

};

//类内声明,类外初始化
int MyClass::class_number = 100;

void test01() {

	//静态成员变量的两种访问方式
	//1.通过对象
	MyClass p1;
	cout << p1.class_number << endl;

	MyClass p2;
	p2.class_number = 200;
	cout << p1.class_number << endl;

	//2.通过类名(建议:因为静态成员变量实际上并不属于某一个类)
	cout << MyClass::class_number << endl;
}

int main()
{
	test01();
    return 0;
}

4.3.3.2静态成员函数

  • 所有对象共享同一个函数
  • 静态成员函数只能访问静态成员变量
#include<iostream>
#include<algorithm>
using namespace std;

class MyClass
{
public:
	/*静态成员函数的特点
		1.所有对象共享同一个函数
		2.静态成员函数只能访问静态成员变量
		3.静态成员函数也是有访问权限
	*/
	static void fun() {
		class_number = 100;
		cout << "静态成员函数的调用" << endl;
	}
	static int class_number;
	int class_tele;
	string class_name;
private:

};

int MyClass::class_number = 0;

void test01() {

	//静态成员函数的两种访问方式
	//1.通过对象
	MyClass p1;
	p1.fun();

	//2.通过类名
	MyClass::fun();
}

int main()
{
	test01();
    return 0;
}

上一篇:C# 类的封装


下一篇:NX二次开发-UFUN两个向量点乘UF_VEC3_dot