1. 类的概述
1.1 具体示例
类是描述一类事物的特征和行为的统称,抽象的不存在的,泛指的概念,例如:描述一个人,从外观上(特征)和言行举止(行为)上进行描述外观上(特征):长头发蓝牙眼睛白皮肤带了美瞳年龄多大身高体重.....言行举止(行为):走路跑步说话学习打游戏.......
1.2 对象
是指类的实例化(实实在在存在的),是特指的概念,例如:人类实例化对象张三、李四、王二等等
1.3 程序来描述
关键字:class -------描述一个类
格式:class 类名{//外观---特征长头发蓝牙眼睛白皮肤带了美瞳年龄多大身高体重.....//言行举止----行为走路跑步说话学习打游戏.......};例如:class People{//特征int eyes;int age;int height;int weight;char name[20];.....//行为void walk(){}void run(){}void play(){}void study(){}..........};
特征(属性):
指的是变量,称为类的成员变量
行为(方法):
指的是函数,称为类的成员函数
类的成员:
包含了成员变量和成员函数
1.4 创建类
1.4.1 第一种方式,直接在主程序文件中创建类
main.c
#include "iostream"
using namespace std;//第一种方式,直接在主程序文件中创建类
class People1
{int age;//年龄int height;//身高char name[20];//姓名//函数的实现第一种方式:在类中实现函数void walk()//走路的行为{cout << "走路" << endl;}void play()//玩的行为{cout << "玩耍" << endl;}void study();//学习
};
//函数的实现第二种方式:在类外实现函数
/*
格式:函数返回值类型 类名 ::函数名(参数列表){//代码}
*/void People1::study()
{cout << "学习" << endl;
}int main()
{return 0;
}
1.4.2 分模块创建
People2.h
#pragma once
#include "iostream"
using namespace std;class People2
{int age;int height;char name[20];void walk(){cout << "走路" << endl;}void study(){cout << "学习" << endl;}//这个函数的实现我们换一种方式实现,我们放在people2.cpp中实现void play_game();};
People2.cpp
#include "People2.h"
/*
格式:函数返回值类型 类名 ::函数名(参数列表){//代码}
*/
void People2::play_game()
{cout << "玩游戏" << endl;
}
2. 实例化的两种方式
是指类的实例化(实实在在存在的),是特指的概念,例如:人类实例化对象张三、李四、王二等等
实例化的两种方式:
2.1 在栈区进行实例化
格式:
类名对象名; //类名和对象名就是标识符, 满足语法规范
例如:
People zhangsan ; //实例化zhangsan对象
People lisi;
2.1.1 通过类的对象去进行访问
(1)对象是在栈区实例化
符号:“.”
格式:
对象名 . 成员 ; //访问类的成员
例如:
zhangsan.height=180;
zhangsan.walk();
main.cpp
#include "iostream"
using namespace std;//类和对象实例化//第一种方式,直接在主程序文件中创建类
class People1
{
public:int age;//年龄int height;//身高char name[20];//姓名//函数的实现第一种方式:在类中实现函数void walk()//走路的行为{cout << "走路" << endl;}void play()//玩的行为{cout << "玩耍" << endl;}void study();//学习
};
//函数的实现第二种方式:在类外实现函数
/*
格式:函数返回值类型 类名 ::函数名(参数列表){//代码}
*/void People1::study()
{cout << "学习" << endl;
}int main()
{//第一种 实例化一个People1People1 people1;people1.walk();people1.play();people1.study();cout << endl;//第二种 实例化一个People1People1* people2 = new People1;people2->walk();people2->play();people2->study();return 0;
}
2.2 在堆区进行实例化
格式: .
类名 * 对象名 = new 类名; //在堆区开辟类大小的空间,并用对象指向该空间
People* zhangsan = new People //注意释放空间:delete zhangsan
2.2.1 如何访问类的成员
(2)对象是在堆区实例化
符号:“->”
格式:
对象名 -> 成员 ;//访问类的成员
例如:
zhangsan->height=180;
zhangsan->walk();
main.cpp
//第二种 实例化一个People1People1* people2 = new People1;people2->walk();people2->play();people2->study();
#include <iostream>
using namespace std;class MyClass {
public:MyClass() {// 无参构造函数的实现}void setValue(int value) {data = value;}void display() {cout << "Value: " << data << endl;}int data;
};int main() {// 在堆上创建对象MyClass* ptr = new MyClass();// 为成员变量赋值ptr->setValue(42);ptr->display();ptr->data = 50;ptr->display();// 释放对象所占用的内存delete ptr;return 0;
}
2.3 面试题:结构体和类的区别是什么?
仅供参考
1. 默认访问权限:
在结构体中,默认的成员访问权限是公共的(public)。
在类中,默认的成员访问权限是私有的(private)。
2. 成员函数:
在结构体中,你可以包含成员函数,但这些函数默认是公共的。
在类中,你可以有公共、私有和受保护的成员函数,具体取决于你在类定义中的声明。
3. 继承:
在结构体中,可以进行继承,但默认继承权限是公共的。
在类中,可以进行公共、私有和受保护的继承,具体取决于你在类定义中的声明。
4. 默认构造函数:
在结构体中,如果没有提供构造函数,会有一个默认的构造函数。
在类中,如果没有提供构造函数,也会有一个默认的构造函数,但是如果你提供了自定义构造函数,那么默认构造函数就不再提供。