目录
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;
}