小编bba*_*hev的帖子

为什么在C ++ 20中std :: move没有[[nodiscard]]?

我最近阅读了[[nodiscard]]C ++ 17,据我了解,它是一项新功能(按合同设计吗?),它迫使您使用返回值。对于有争议的函数std::launder(从C ++ 20开始不丢弃),这是有意义的,但是我想知道为什么std::move在C ++ 17/20 中没有这样定义。您知道很好的理由还是因为C ++ 20尚未完成?

c++ language-lawyer c++17 c++20

45
推荐指数
2
解决办法
1869
查看次数

Java中继承的私有方法

我对在继承中使用私有方法感到困惑,例如:

public class A {
    private void say(int number){
        System.out.print("A:"+number);

    }
}

public class B extends A{
    public void say(int number){
        System.out.print("Over:"+number);
    }
}

public class Tester {
    public static void main(String[] args) {

        A a=new B();
        a.say(12);

    }
}
Run Code Online (Sandbox Code Playgroud)

基于上面的代码,我感到困惑的私有方法的继承,是继承了私有方法class AB?或者两个类中的say方法完全不相关?由于代码有当它在main()方法运行错误,好像class B不能调用从私有方法class A.

java inheritance private-methods

4
推荐指数
1
解决办法
2万
查看次数

如何将数组传递给构造函数?

我正在尝试学习Java,但是我将数组传递给构造函数时遇到了问题.例如:

申请类: byte[][] array = new byte[5][5]; targetClass target = new targetClass(array[5][5]);

目标类:

public class targetClass {
    /* Attributes */
    private byte[][] array = new byte[5][5];

    /* Constructor */
    public targetClass (byte[][] array) {
        this.array[5][5] = array[5][5];
    }

}
Run Code Online (Sandbox Code Playgroud)

如果你能告诉我如何做到这一点,我将不胜感激.

java arrays constructor

2
推荐指数
1
解决办法
5万
查看次数

找到重复整数的哪种方法更有效?

通常情况下,问题有不同的解决方案.我的目的是找到重复的整数.我有两种方法.

第一个是对整数数组进行排序并进行比较.第二个就是使用HashSet.你能告诉我哪个更有效率,为什么?请注意,不得覆盖原始数组.

主要课程

public class Main {
    static DuplicateNumbers dn;
    static DuplicateNumbersHash dnh;

    public static void main(String[] args) {
        int[] arrayOfIntegers = {9, 7, 1, 3, 4, 2, 7, 5, 9};

        // 1st class test
        dn = new DuplicateNumbers(arrayOfIntegers);
        dn.searchForDuplicates();

        System.out.println("\n\n2nd test\n\n");

        // 2nd class test
        dnh = new DuplicateNumbersHash(arrayOfIntegers);
        dnh.searchForDuplicates();

    }
} // Main class
Run Code Online (Sandbox Code Playgroud)

非HashSet方法

public class DuplicateNumbers {
    protected int[] arrayOfIntegers;

    public DuplicateNumbers(int[] arrayOfIntegers) {
        this.arrayOfIntegers = arrayOfIntegers;
    }

    public void searchForDuplicates() {
        // …
Run Code Online (Sandbox Code Playgroud)

java algorithm hashset

2
推荐指数
1
解决办法
1027
查看次数

std :: shared_ptr,std :: weak_ptr和控制块

我最近一直在阅读有关std::make_shared功能的内容.据我所知Effective Modern C++,make函数应该是首选,除非:

  1. 自定义内存管理已到位.
  2. 存在内存问题,例如std::weak_ptr可能比它更长std::shared_ptr,处理大型对象,自定义删除等.

所以,我理解std::make_shared只用一次调用就可以在堆及其控制块上分配一个对象.因此,问题是std::shared_ptr在必须释放控制块之前可能不会删除对象.如果我错了,请纠正我,但这是在最后一次std::weak_ptr释放的时候.因此,std::make_shared如果存在std::weak_ptr指向它的活着,则可能不合适.

但这对大多数物体来说仍然是一个问题吗?我们是否需要关注何时为非大型物体发布控制块?可以说,现在内存并不难以获得,所以这只是大型对象和低内存系统的问题吗?

我关注的一点是:如果我设计一个使用的类std::make_shared,并std::weak_ptr在将来使用,我必须返回并用常规替换make函数std::shared_ptr<Class>(new Class()).

c++ stl shared-ptr weak-ptr c++11

1
推荐指数
1
解决办法
712
查看次数

使用if else语句终止程序?

尝试使用负数和if else语句终止程序.有没有人看到这个问题的错误.

import java.util.Scanner;

public class Assignment {
    public static void main(String args[]){
    int n;
    int i=0;

    System.out.print("Enter a Number:");
    Scanner scanner = new Scanner(System.in);
    n= scanner.nextInt();
    int backUp = n;
    if(n>0)

        n=n/10;
        i++;

        else if(backUp = -1)

        System.out.print("program terminated......");
            System.exit(0);



    System.out.println("Number of Digits in " +backUp +" is " +i);

    }
}
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
1
解决办法
2万
查看次数

如何在Java中迭代字符循环计数器?

问题是 - "写一个for循环,将一个字符循环计数器从'c'迭代到'h',包括两个字符,每次使用System.out.print()打印字符循环计数器.外部(和之后) )循环,用空的System.out.println()终止该行."

int x =1;

for (char y = 'c'; y>=2 && y<=7; y++) {
    System.out.println(y);
    x++;
}

System.out.println();
Run Code Online (Sandbox Code Playgroud)

java counter loops character

-2
推荐指数
1
解决办法
1万
查看次数