C++ day2

https://note.youdao.com/s/BGiSQ9uwicon-default.png?t=N7T8https://note.youdao.com/s/BGiSQ9uw

封装一个结构体,结构体中包含一个私有数组,用来存放学生的成绩,包含一个私有变量,用来记录学生个数,

提供一个公有成员函数,void setNum(int num)用于设置学生个数

提供一个公有成员函数:void input(),用来对所有学生的成绩进行输入工作

提供一个公有成员函数:void sort(),用来实现对存储的学生成绩进行降序排序

提供一个公有的成员函数:void show(),用于将所有学生的成绩展示出来

在主程序中,完成相关函数的调用

 

#include <iostream>

using namespace std;

struct STU{

private:
    double *p = new double[30];
private:
    int num;
public:
    void setNum(){
        cin>>num;
    }
public:
    void input(){
        for(int i=0;i<num;i++){
            cin>>p[i];
        }
    }
public:
    void sort(){
        for(int i=1;i<num;i++){
            for(int j=0;j<num-i;j++){
                if(p[j]<p[j+1]){
                    int temp;
                    temp = p[j];
                    p[j] = p[j+1];
                    p[j+1] = temp;
                }
            }
        }
    }
public:
    void show(){
        cout<<"学生成绩依次为:"<<endl;
        for(int i=0;i<num;i++){
            cout<<p[i]<<' ';
        }
    }
};
int main()
{
    cout<<"请输入学生数:"<<endl;
    STU a;
    a.setNum();
    cout<<"请输入每个学生成绩:"<<endl;
    a.input();
    a.sort();
    a.show();
    return 0;
}

 

面试题:

 1.指针与引用的区别:

(1).指针是记录变量的地址,而引用是相当于复制变量,是其本身

(2).定义指针会占内存8字节空间,但是引用不会,和变量共用同一片空间

(3).指针需要解引用才可以改变变量的值,引用只需改变自己的值就可以改变变量的值

(4).指针定义后可以改变指向,但是引用不能改变

(5).指针可以有多层,但是引用只能有一层

(6).const修饰指针可以控制其指向的空间和值,修饰引用时只能修饰值

(7).没有引用数组,但是有数组引用

(8).定义引用必须初始化,而定义指针可以不初始化

2.malloc,free和new,delete区别

(1).new申请空间时,可以给堆区空间初始化,malloc不可以;

(2).new\delete是关键字,而malloc\free是库函数

(3).new申请空间时以数据类型为单位,而malloc申请空间时以字节为单位

(4).new申请的空间返回的结果申请类型的指针,而malloc申请空间时返回void*类型,需要进行强转后使用

(5).new申请空间时会调用构造函数,malloc不会

(6).delete释放空间时,会调用析构函数,free不会

3.C++中const的使用

(1).修饰变量:使用const修饰的变量在声明时必须进行初始化,并且在程序运行期间其值是不可修改的

(2).修饰函数返回类型:const可以用于修饰函数返回类型,表示返回的值是一个常量,不能被修改

(3).修饰函数参数:使用const修饰函数参数表示该参数在函数内部是只读的,不能被修改。这样可以确保函数不会无意间修改参数的值

(4).修饰成员函数:const可以用于修饰类的成员函数,表示该函数在内部不会修改对象的状态。这样的成员函数称为常量成员函数,可以在常量对象上进行调用

4.什么是回调函数

回调函数是指一个被传入另一个函数的函数指针(或函数对象、函数引用),在特定事件或条件满足时由另一个函数调用。

回调函数的使用可以将程序的逻辑控制权转移给另一个函数或模块,在事先约定的情况下,由另一个函数来调用指定的回调函数,以响应某些事件或完成特定的任务。

5.函数重载的相关内容

C++中支持函数重载,即:在同一作用域下,可以定义多个同名的函数,但是要求参数列表必须不同,所谓函数重载,是静态多态的一种,能够做到“一名多用”

函数重载的要求:

1、函数名相同

2、形参列表必须不同:可以是参数个数不同、参数类型不同

3、作用域也要相同

4、跟返回值没有关系

调用:当调用函数时,系统会根据传递的实参类型,自动匹配相应的重载函数

6.对对象的理解

在C++中,对象是一种具有状态和行为的数据结构。它是基于类(class)定义的,通过实例化类(创建对象)来使用。

对象的概念是将现实世界的事物抽象成计算机程序中的实体。每个对象都有自己的属性(成员变量)和操作(成员函数),这些属性和操作定义了对象的行为和能力。

C++中的对象可以分为以下几类:

  1. 基本数据类型对象:例如整型、浮点型、字符型等。
  2. 自定义类对象:通过类的定义,我们可以创建属于该类的对象。这些对象具有自己的属性和行为,可以按需调用类的成员函数来实现所需功能。
  3. 指针和引用:指针和引用本身也可以看作是对象,它们在C++中用于间接访问和操作其他对象。

通过使用对象,我们可以将程序的逻辑划分为多个独立的模块,每个模块负责管理和处理自己相关的数据和问题。通过面向对象的思想,可以更好地组织和管理代码,提高代码的可读性、可维护性和可扩展性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值