C++ 类简介

一、什么是类

1、类定义

类是对某一类具有共同特征的事物的抽象描述。
例如电脑类,具有键盘、屏幕、电源键等共同特征

2、类的本质

类是一种用户自定义的引用数据类型,它的本质是数据类型,并不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作

二、类的特性

1、抽象;
2、封装和数据隐藏;
3、继承;
4、多态;
5、代码可重用性

三、声明类

1、类的声明格式

class className
{
	private:
	  //
	protected:
	  //
    public:
      //
};

例:

class People
{
private:
    char name[40];
    float height;
    float weight; //数据成员
    
public:
    void getWeight();
    void getHeight(); //成员函数
};

定义类后,类名就是新的数据类型,即People就像int一样可以定义变量

2、类的成员访问权限

类使用private、protected和public关键字控制成员的访问权限,类成员的默认访问权限为private
1)、private成员:能被本类的成员函数(不管是哪一种控制符声明的成员函数,都可以)、友元函数
2)、protected成员:可通过本类的成员函数(不管是哪一种控制符声明的成员函数,都可以)、友元函数、其派生类的成员函数(不管是哪一种控制符声明的成员函数,都可以)
3)、public成员:能被本类的成员函数(不管是哪一种控制符声明的成员函数,都可以)、友元函数、本类的对象、其派生类的成员函数(不管是哪一种控制符声明的成员函数,都可以);

3、成员访问类型的选择

1)、数据成员通常声明为private属性,这样可以实现数据隐藏;
2)、成员函数通常声明为public属性,这样在外部可以访问;
3)、对于类成员,若想让派生类能够访问访问而不想让外部访问,则声明为protected属性

四、对象的创建和初始化

1、创建对象

创建对象同创建数据类型变量相似,格式为:

className objectName;

2、对象的初始化

对象的初始化有四种形式:
1)、显式调用构造函数初始化;
2)、隐式调用构造函数初始化;
3)、动态初始化;
4)、C++11列表初始化

#include <iostream>
using namespace std;

class Student
{
private:
    int m_age;
    float m_score;

public:
    Student(){}
    Student(int age, float score)
    {
        m_age = age;
        m_score = score;
    }

    void show()
    {
        cout << "age = " << m_age
             << " score = " << m_score
             << endl;
    }
};

int main()
{
    Student stu = Student(16, 90); //显式调用构造函数初始化
    Student stu1(17, 91);           //隐式调用构造函数初始化
    Student *sp = new Student(18, 92); //动态初始化

    //列表初始化
    //Student stu = {16, 90}; 
    //Student stu1{17, 91};
    //Student *sp = new Student{18, 92};

    stu.show();
    stu1.show();
    sp->show();

    return 0;
}

五、访问类成员

可通过两种方式访问类成员:

1、通过类对象访问类成员

class People
{
public:
    char name[40];
    float height;
    float weight; //数据成员
    
public:
    void getWeight();
    void getHeight(); //成员函数
};

...
Pelople peo;
peo.height = 180;

2、通过指向类的指针访问类成员

class People
{
public:
    char name[40];
    float height;
    float weight; //数据成员
    
public:
    void getWeight();
    void getHeight(); //成员函数
};

...
People *peo = new People;
peo->height = 180;
#include <iostream>
using namespace std;

//类的声明
class Student{
private:  //私有的
    char *m_name;
    int m_age;
    float m_score;

public:  //公有的
    void setname(char *name);
    void setage(int age);
    void setscore(float score);
    void show();
};

//成员函数的定义
void Student::setname(char *name)
{
    m_name = name;
}
void Student::setage(int age)
{
    m_age = age;
}
void Student::setscore(float score)
{
    m_score = score;
}
void Student::show()
{
    cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
}

int main()
{
    //在栈上创建对象
    Student stu;
    stu.setname("小明");
    stu.setage(15);
    stu.setscore(92.5f);
    stu.show();

    //在堆上创建对象
    Student *pstu = new Student;
    pstu->setname("李华");
    pstu->setage(16);
    pstu->setscore(96);
    pstu->show();

    return 0;
}

运行结果:小明的年龄是15,成绩是92.5 李华的年龄是16,成绩是96

参考:
1、《C++ Primer Plus》
2、C++访问控制符详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值