【C++】类和对象 - 初始化列表 - 类对象作为类成员 - 静态成员

初始化列表

语法:构造函数(): 属性1(值),属性2(值)...
构造函数(数据类型 变量1,数据类型 变量2): 属性1(变量1),属性2(变量2)...
构造函数:

Person(int a, int b): m_name(a), m_age(b){
}
类对象作为类成员

先构建phone再构建person函数

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

class Phone
{
public:
    Phone(string pName)
    {
        m_PName = pName;
        cout << "Phone构造函数调用" << endl;
    }
    string m_PName;
};

class Person
{
public:
    Person(string name, string pName) : m_Name(name), m_Phone(pName)
    {
        cout << "Person构造函数调用" << endl;
    }
    string m_Name;
    Phone m_Phone;
};

int main()
{
    Person p("张三", "苹果");
    cout << "姓名:" << p.m_Name << "手机:" << p.m_Phone.m_PName << endl;
    return 0;
};

输出:

Phone构造函数调用
Person构造函数调用
姓名:张三手机:苹果
静态成员

静态成员就是在成员函数和成员变量前加上static
静态成员变量:

  • 所有对象共享同一份数据
  • 在编译阶段分配内存
  • 类内声明,类外初始化(必须在类外初始化)

静态成员函数:

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

class Person
{
public:
    Person()
    {
        cout << "Person构造函数调用" << endl;
    }
    static int age;
};

int Person::age = 100;

int main()
{
    Person p;
    Person p1;
    cout << p.age << endl;
    cout << p1.age << endl;

    p1.age=20;
    cout << p.age << endl;
    cout << p1.age << endl;

    cout << Person::age << endl;//可以通过类名访问
    return 0;
};

非静态成员变量占对象空间/静态成员变量不占/函数也不占,所有函数共享一个函数实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值