四时宝库

程序员的知识宝库

C++之类和对象

什么是类和对象

C++是一种面向对象的编程语言,其中类和对象是面向对象编程的基本概念之一。

  • 类可以看作是一个模板或者蓝图,用来描述具有相同属性和方法的一组对象。
  • 对象则是这个类的实例化,代表着一个具体的实体。

C++面向对象的三大特性为:封装、继承、多态,C++认为万事万物都皆为对象,对象上有其属性和行为。

举个例子:大伙的女朋友可以抽象为一个女朋友类,属性有姓名、年龄、身高、体重…,行为有唱、跳、rap…,而你的女朋友就是对象,具体的姓名叫做小芳,年芳18,黄金身材。这就是类的具体化,也叫作实例化过程。

如何创建一个类

如何创建一个类| 基本语法

在C++中,我们可以使用关键词 class 来创建一个类。下面是一个简单的类的定义示例:

这个类叫做 GirlFriend,包含了两个属性 m_namem_age,以及三个方法 sing(),jump(),rap()。类中声明,类外实现的函数必须用类名限定,其中 public,protected,private 是访问控制修饰符

如何创建一个类| 访问控制修饰符

在C++中,有三个访问控制修饰符:publicprivateprotected。它们的作用是限制对象的属性和方法在哪些地方可以被访问。

  • 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++,看文章比较无聊,不妨关注下关注下小编的视频教程,通俗易懂,深入浅出,一个视频只讲一个知识点。视频不深奥,不需要钻研,在公交、在地铁、在厕所都可以观看,随时随地涨姿势。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接