赞
踩
目录
C++提供初始化列表语法用来初始化属性
语法:构造函数():属性1(值1),属性2(值2)...{ }
- class People
- {
- public:
-
- //传统初始化操作
- Person(int a, int b, int c)
- {
- A = a;
- B = b;
- C = c;
- }
-
- //初始化列表初始化属性
- Person():A(10),B(20),C(30)
- {
-
- }
-
- //初始化列表可变值
- Person(int a, int b, int c):A(a),B(b),C(c)
- {
-
- }
-
- private:
-
- int A;
- int B;
- int C;
-
- }
-
- void test()
- {
- Person p(10,20,30);//传统方法
- Person p;//初始化列表初始化属性
- Person p(10,20,30);//初始化列表可变值
- }
- class A{}
- class B
- {
- A a;
- }
先构造A再构造B,先析构B再析构A(先进后出LIFO)
所有对象共享同一份数据 -- 你改了别人用的就是改过的数据
在编译阶段分配内存 -- 生成了exe程序,还没有双击运行之前已经分配在全局区中
类中声明,类外初始化 -- 必须要有一个初始值否则没法用
- class Person
- {
- public:
-
- static int m_A;
- }
- //类外初始化
- int Person::m_A = 100;
静态成员变量不属于某一个对象上面,所有对象共享同一份数据,因此有两种访问方式:
1、通过对象访问
- Person P;
- cout << P.m_A << endl;
2、通过类名访问
cout << Person::m_A << endl;
静态成员变量访问权限:在Private作用域下访问,出了这个类不可以访问
所有对象共享同一个函数,类外访问不到私有静态函数
静态成员函数只能访问静态成员变量
- class Person
- {
- public:
- static void func()
- {
- m_A = 100;//静态成员函数可以访问静态成员变量
- cout << "static void func调用" << endl;
- }
-
- static int m_A;
- };
-
- int Person::m_A = 0;
-
- void test0()
- {
- //通过对象访问
- Person P;
- P.func();
-
- //通过类名访问
- Person::func();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。