抖音上看到的一串代码。

img

应该是关于类的代码,但是写代码的时候第一句就报错了,不太懂是啥原因,怎么写才是对的啊

需要有Child类

可以根据图片里面的属性来定义Child类,然后把这些代码放到main()方法里进行测试就可以了。

图片里给出的应该是Java代码把,下面使用Java和C++分别作了个简单的实现:

代码如下:

参考链接:


C++ 类构造函数 & 析构函数 | 菜鸟教程 C++ 类构造函数 & 析构函数 C++ 类 & 对象 类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。 下面的实例有助于更好地理解构造函数的概念: 实例 [mycode3 type='cpp'] #include usin.. https://www.runoob.com/cplusplus/cpp-constructor-destructor.html

【C++】创建对象之new关键字_c++ new一个对象_Jeff_的博客-CSDN博客 起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题。当然这都是跟new的用法有关的。new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高... https://blog.csdn.net/weixin_40539125/article/details/83715393

Java如何定义类 - 知乎 定义和使用类编写Java程序,简言之就是三件事情: 定义类使用类定义类的工作包括: 定义类的属性(也称为成员变量)定义类的方法定义类的构造方法(也称构造器或者构造器)使用类的工作包括: 基于类创建对象(即… https://zhuanlan.zhihu.com/p/439250799

c++的实现:


#include <iostream>

using namespace std;

// https://www.runoob.com/cplusplus/cpp-classes-objects.html
class Child{
    
    public :
        string gender;
        string weight;
        string height;
        string birth;
        string words;
        
        // https://www.runoob.com/cplusplus/cpp-constructor-destructor.html
        Child();
        void show();
    
    
}; 

Child::Child(){
    
}

// 显示Child类对象的信息 
void Child::show(){
    
    cout<<"孩子信息:"<<endl;
    cout<<"性别:"<<gender<<endl;
    cout<<"体重:"<<weight<<endl;
    cout<<"身高:"<<height<<endl;
    cout<<"出生时间:"<<birth<<endl;
    cout<<"第一句话:"<<words<<endl;
    
}

int main(void){
    // https://blog.csdn.net/weixin_40539125/article/details/83715393
    Child * child = new Child();
    child->gender="女";
    child->weight="3010g";
    child->height="48cm";
    child->birth="2018/02/01 09:12";
    child->words="Hello world!";
    child->show();
    delete(child);
    
    return 0; 
    
} 


img

java的实现:



public class 产房传喜讯 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Child child = new Child();
        child.gender="女";
        child.weight="3010g";
        child.height="48cm";
        child.birth="2018/02/01 09:12";
        child.words ="Hello world!";
        
        // 打印Child对象的信息
        System.out.println(child);
                
    }

}

// 定义Child类
// https://zhuanlan.zhihu.com/p/439250799
class Child{
    
    public String gender;
    public String weight;
    public String height;
    public String birth;
    public String words;

    public Child() {
        
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getWeight() {
        return weight;
    }

    public void setWeight(String weight) {
        this.weight = weight;
    }

    public String getHeight() {
        return height;
    }

    public void setHeight(String height) {
        this.height = height;
    }

    public String getBirth() {
        return birth;
    }

    public void setBirth(String birth) {
        this.birth = birth;
    }

    public String getWords() {
        return words;
    }

    public void setWords(String words) {
        this.words = words;
    }

    @Override
    // 用于打印对象的信息
    public String toString() {
        return "孩子信息 [性别:" + gender + ", 体重:" + weight + ", 身高:" + height + ", 出生时间:" + birth + ", 第一句话:"
                + words + "]";
    }
    
    
    
}

img

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/335076
  • 这篇博客你也可以参考下:代码保护壳的优化(通过异常来恢复壳代码以及对壳数据进行加密解密)
  • 除此之外, 这篇博客: 进大厂必会的几个常用排序算法的图解剖析以及详细代码中的 一 快速排序 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 快速排序的思想就是通过不断转换轴点元素最终完成排序

    什么是轴点元素?

    按升序排序来说,轴点元素就是左边所有元素比该元素小,右边所有元素比该元素大

    以下面的图为例子,我们首先需要假设一个轴点元素,然后将所有比它小的放在它左边,比它大的放在它右边,然后通过递归的方式完成最终的排序

    过程如下:

    1)首先要先定义两个指针,开始时分别指向首尾,分别为left,right

    2)假设以第一个元素为轴点元素,我们首先从又右开始往左扫描,用right位置的值与假设索引值进行比较,
    ①如果比pivot元素值大就不动,并且right指针向左移动一次,重复上述操作
    ②如果比pivot元素值小就将值赋给left所对应的位置,left向右移动一次,此时需要反向,从左往右开始扫描,重复上述操作

    3)重复上述2的操作直到临界点,即left < right,退出操作

    4)将假设轴点元素的值赋给最后的索引所在的位置,并返回索引

    此时第一轮的选取轴点元素就完成了,且我们可以知道轴点元素左边都是比轴点元素小的,我们可以从left到轴点元素为界限再选取一次轴点元素,以轴点元素到right为界限选取一次轴点元素,依次类推,我们可以很轻松的就将所有元素排好序了,递归时我们需要确定明确的界限保证递归函数能够回溯,不然会造成死循环的情况,我们可以知道此时的界限就是需要left < right,在这个界限内可以一直调用函数直到满足界限,即只剩下一个元素,也就保证了所有元素的排序成功了

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    代码如下:

    public class QuickSort {
        public static void main(String[] args) {
    
            int[] arr = {6,3,5,8,1,9,7,2,0};
            int i = pivotIndex(arr, 0, arr.length);
            System.out.println(Arrays.toString(arr));
        }
    
        //对[begin,end) 范围内的元素进行快速排序
        public static void quickSort(int[] arr,int begin,int end){
            
            if (end - begin < 2){
                return;
            }
            //对范围内元素进行快速排序确定轴点
            int mid = pivotIndex(arr, begin, end);
    
            //对轴点元素左边进行快速排序
            quickSort(arr, begin, mid);
            //对轴点元素右边进行快速排序
            quickSort(arr, mid + 1, end);
    
    
        }
    
        /**
         * 构建范围在[begin,end)范围内元素的轴点元素
         *
         * @return  返回轴点元素的最终位置
         */
        public static int pivotIndex(int[] arr,int begin,int end){
    
            //备份begin元素值
            int pivot = arr[begin];
    
            //将end元素指向最后一个元素
            end--;
    
            //具体操作逻辑构建轴点元素位置
    
            while (begin < end){
                while(begin < end){
                    //从右往左判断
                    if (pivot < arr[end]){
                        end--;
                    }else {
                        arr[begin++] = arr[end];
                        break;
                    }
                }
                while(begin < end){
                    //从左往右判断
                    if (pivot > arr[begin]){
                        begin++;
                    }else {
                        arr[end--] = arr[begin];
                        break;
                    }
                }
    
    
            }
    
            //将备份的轴点元素放入最终的位置
            arr[begin] = pivot;
    
            return begin;
        }
    }
    
    
  • 您还可以看一下 CSDN讲师老师的后疫情时代,敏捷团队管理的升级密码课程中的 后疫情时代,敏捷团队管理的升级密码小节, 巩固相关知识点