C++类和对象

类和堆积的基本概念

类:具有相同特征和行为的事物,可为类

        类是有两部分组成:属性和行为

        属性:可用数据类型描述的特征

        行为:可用函数描述的操作

对象:类的实体化,类的实例化。

类的特点:封装,继承/派生,多态


类的定义

创建语法:        (类的定义只能放在在全局区 或 命名空间。放在另一个类也行,叫做类种类

class 类名

{

//权限限定词 

public:

protected:

private:        

};        //结尾一定有一个分号;


权限限定的作用  和 对象的创建

类外只能访问public属性下面的 属性 和 行为

        类外访问类中的数据只能通过 对象 访问,当然static成员除外

        public下的函数称为 接口

        protected 和 private 类外都不可访问,但是可以提供共有接口 间接访问

对象的创建有三种方式:1.普通对象 2.对象数据 3.new一个对象

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

class Student
{
//共有属性
public:
    void print()
    {
        coud << name << '\t' << age << endl;
    }
    void initData(string name,int age)
    {
        s_name = name;
        s_age = age;
    }

//保护属性
protected:
    string s_name = "默认";

//私有属性
private:
    int age = 0;
};

int main()
{
    //普通创建
    Student xiaoming;       
    //xiaoming.s_name = "小明";  报错,类外不能访问 保护属性和私有属性
    xiaoming.initData("小明",15);    //可以通过public提供的接口 访问
    xiaoming.print();

    //对象数组   
    Student x[4];           
    for(int i = 0;i < 4;i++)
    {
        x[i].initData(string("name") + to_string(i),18 + i);
        x[i].print();
    }

    //new一个对象
    Student *P = new Student;
    p->initData("李明",16);
    p->print();
    //释放
    delete p;
    p = nullptr;

    return 0;
}

类中没有写在权限限定词下的属性 默认为私有属性

C++中的结构体在一定的程序可以直接当做类,没有写在权限限定词下的属性,默认为共有属性


成员访问(初始化)

        通过提供的公有接口使用传参或者返回值,以及默认的方式初始化数据

        

#include<iostream>
#include<string>
using namespace std;
class MM
{
public:
    //传参的方式
    void initData(string name,int age)
    {    
        m_name = name;
        m_age = age;
    }

    //返回引用的方式
    string& getName()
    {
        return m_name;
    }
    int& getAge()
    {
        return m_age;
    }

    //输出
    void print()
    {
        cout << M_name << '\t' << m_age << endl;
    }

protected:
    //默认初始化
    string m_name = "默认值";
    int m_age = 0;
};

int main()
{
    MM mm;
    //使用传参的方式访问成员
    mm.initData("mm",18);
    mm.print();

    MM girl;
    //使用返回引用的方式访问成员
    girl.getName() = "小芳";
    girl.getAge() = 18;
    girl.print();

    return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值