什么是类和对象
C++是一种面向对象的编程语言,其中类和对象是面向对象编程的基本概念之一。
- 类可以看作是一个模板或者蓝图,用来描述具有相同属性和方法的一组对象。
- 对象则是这个类的实例化,代表着一个具体的实体。
C++面向对象的三大特性为:封装、继承、多态,C++认为万事万物都皆为对象,对象上有其属性和行为。
举个例子:大伙的女朋友可以抽象为一个女朋友类,属性有姓名、年龄、身高、体重…,行为有唱、跳、rap…,而你的女朋友就是对象,具体的姓名叫做小芳,年芳18,黄金身材。这就是类的具体化,也叫作实例化过程。
如何创建一个类
如何创建一个类| 基本语法
在C++中,我们可以使用关键词 class 来创建一个类。下面是一个简单的类的定义示例:
这个类叫做 GirlFriend,包含了两个属性 m_name 和 m_age,以及三个方法 sing(),jump(),rap()。类中声明,类外实现的函数必须用类名限定,其中 public,protected,private 是访问控制修饰符
如何创建一个类| 访问控制修饰符
在C++中,有三个访问控制修饰符:public、private 和 protected。它们的作用是限制对象的属性和方法在哪些地方可以被访问。
- public:公有访问权限,表示类的外部和派生类可以访问这个属性或方法。
- protected:保护访问权限,表示只有类内部和派生类的方法可以访问这个属性或方法。
- private:私有访问权限,表示只有类内部的方法可以访问这个属性或方法。
- 无访问控制修饰符,类中默认为private属性,结构体中默认为public属性
目前来说只需要知道,类外对象只能访问public下面的属性和方法。protected和private都不可访问,后续继承中protected和private会有所不同。
如何创建对象和访问数据
C++对象的创建是由构造函数完成的,下一章节做详细讲解,目前学会创建无参对象即可,创建一个无参对象的方法很简单,把类名当做一个新的数据类型即可,一般有以下两种方式
- 类名 对象名;
- new一个对象:类名* 指针名=new 类名;
C++类的对象访问属性和方法非常简单,和C语言结构体一样的方式,如果是普通对象用.访问,如果是对象指针用->访问。如下测试代码:
#include
#include
class GirlFriend
{
int m_money;
public:
void sing()
{
std::cout << "Sing" << std::endl;
}
protected:
std::string m_name;
private:
int m_age;
};
int main()
{
//new一个对象
GirlFriend* p = new GirlFriend;
//创建一个对象
GirlFriend object;
//外部访问:只能访问public属性
p->sing();
object.sing();
//默认属性是private不可访问
//以下代码错误
//object.m_money;
return 0;
}
三种属性操作
C++类中属性的初始化通常是由构造函数完成,暂时没讲构造函数,可以看看以下三种属性操作方式:
- 直接在创建的时候初始化
- 通过成员函数传参方式访问数据
- 通过成员函数返回引用的方式访问数据
如下测试代码:
#include
#include
class GirlFriend
{
//1.直接给默认值
int m_money=0;
public:
//2.传参操作数据
void setData(std::string name, int age, int money)
{
m_name = name;
m_age = age;
m_money = money;
}
//3.返回引用
std::string& getName() { return m_name; }
int& getAge() { return m_age; }
int& getMoney() { return m_money; }
void print()
{
std::cout << m_name<<"\t"<< m_age<<"\t"<< m_money << std::endl;
}
protected:
std::string m_name="默认";
private:
int m_age=0;
};
int main()
{
GirlFriend object;
object.print();
object.setData("baby", 18, 100);
object.print();
object.getName() = "moying";
object.getAge() = 16;
object.getMoney() = 100;
object.print();
return 0;
}
运行结果如下:
相关
如果阁下正好在学习C/C++,看文章比较无聊,不妨关注下关注下小编的视频教程,通俗易懂,深入浅出,一个视频只讲一个知识点。视频不深奥,不需要钻研,在公交、在地铁、在厕所都可以观看,随时随地涨姿势。