C++类和结构体详解(3)

目录

类和对象

一、类的定义

定义类型

实例化对象

二、C++中的结构体


类和对象

概括:类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它是一种封装了数据和函数的组合。类中的数据称为成员变量,函数称为成员函数。类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例,拥有类的成员变量和成员函数。


一、类的定义

概述:类是用户自定义的类型,定义一个类需要使用关键字 class,然后指定类的名称,并且类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。

语法: class 类名{ 访问权限: 属性 / 行为 };

定义类型

 const double PI = 3.14;
 ​
 class Circle
 {
 public:  // 访问权限  公共的权限
     int m_r; // 半径
     double calculateZC()    // 获取到圆的周长
     {
         return  2 * PI * m_r;
     }
 };

关键字 public 确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。您也可以指定类的成员为 privateprotected

实例化对象

 // 通过圆类,创建圆的对象
 // c1就是一个具体的圆
 Circle c1;

类的对象的公共数据成员可以使用直接成员访问运算符 . 来访问。

实例 定义一个圆类,求圆的周长

 // 圆周率
 const double PI = 3.14;
 ​
 // 1、封装的意义
 // 将属性和行为作为一个整体,用来表现生活中的事物
 ​
 // 封装一个圆类,求圆的周长
 // class代表设计一个类,后面跟着的是类名
 class Circle
 {
 public:  // 访问权限  公共的权限
 ​
     // 属性
     int m_r; // 半径
 ​
     // 行为
     // 获取到圆的周长
     double calculateZC()
     {
         // 2 * pi  * r
         // 获取圆的周长
         return  2 * PI * m_r;
     }
 };
 ​
 int main() 
 {
     // 通过圆类,实例化圆对象
     // c1就是一个具体的圆
     Circle c1;
     c1.m_r = 10; // 通过点号访问成员变量 给圆对象的半径 进行赋值操作
 ​
     // 2 * pi * 10 = = 62.8
     cout << "圆的周长为: " << c1.calculateZC() << endl;
 ​
     system("pause");
 ​
     return 0;
 }
 ​

结果

 圆的周长为: 62.8
 请按任意键继续. . .

需要注意的是,私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。

二、C++中的结构体

结构体(struct)也是一种用户定义的数据类型,用于组合不同类型的数据成员。与C语言中的结构体相比,C++的结构体具有一些额外的特性,且C++中的结构体与C++中的类相似。

  1. 成员函数:

    • C++的结构体可以包含成员函数,这使得结构体更加灵活。成员函数可以对结构体的数据进行操作,类似于类中的成员函数。这使得结构体在某种程度上类似于C++中的类。
  2. 访问权限:

    • C++中的结构体,默认的访问权限是public而类的默认访问权限是私有的private。这意味着结构体的成员在结构体外部可以被直接访问,不需要通过公共成员函数。
  3. 继承:

    • C++中的结构体支持继承可以从其他结构体或类继承属性和方法。这使得结构体可以更灵活地组合和扩展功能。
  4. 构造函数和析构函数:

    • C++中的结构体可以有构造函数和析构函数这使得在创建和销毁结构体对象时可以执行特定的操作。构造函数用于初始化对象,而析构函数用于在对象被销毁时执行清理工作。
  5. 默认成员初始化:

    • 在C++11及更高版本中,结构体可以具有成员的默认初始化值,这使得在创建结构体对象时,不必显式为每个成员赋值。
  6. 友元函数:

    • 结构体中的成员函数可以被声明为友元函数,从而允许其他类或结构体访问其私有成员。这增加了结构体的灵活性。

实例

#include <iostream>

struct Point 
{
    int x;
    int y;

    // 构造函数
    Point(int a, int b) : x(a), y(b) {}

    // 成员函数
    void print() 
    {
        std::cout << "Point(" << x << ", " << y << ")\n";
    }
};


int main() 
{
    // 创建结构体对象并调用成员函数
    Point p(3, 5);
    p.print();

    return 0;
}

 注意:  c语言中结构体没有构造函数,析构函数,成员函数能在结构体中赋初值。

上一篇:C++函数的重载、函数的默认参数、函数的占位参数详解

下一篇:C++类成员的访问权限详解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值