小编PhD*_*hDP的帖子

在C++中实现"有界通用性"

我正在将一个项目从Java转移到C++,而我在Java中遇到一些相对简单的问题.

我有一个类X来处理Y从中继承的类型和对象的对象Y.X经常需要调用一个方法Y,比方说kewl_method(),这个方法在继承的每个类中都是不同的Y.在Java中,我可以这样做:

public class X<y extends Y>
Run Code Online (Sandbox Code Playgroud)

我所说的kewl_method()X没有任何头痛,它会做我想做的.如果我理解正确(我是C++的新手),在C++中没有有限的通用性,所以如果我使用模板X就可以用绝对的东西填充它,我将无法调用的变种kewl_method().

在C++中执行此操作的最佳方法是什么?使用演员?

限制:我不能使用boost或TR1.

c++ generics templates

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

"const"有成本吗?

编译器有时会利用某些"变量"是优化常量的事实,所以在可能的情况下使用"const"关键字通常是一个好主意,但是有权衡吗?

简而言之,是否存在使用"const"实际上可能使代码变慢(甚至一点点)的情况?

c optimization performance const

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

C/C++:加0

我在函数中有以下行来计算序列中'G'和'C'的数量:

count += (seq[i] == 'G' || seq[i] == 'C');
Run Code Online (Sandbox Code Playgroud)

编译器是否足够聪明,当他们看到'count + = 0'时他们没有做任何事情,或者他们真的会浪费时间'加'0?

c c++

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

Java继承和泛型

我试图用泛型扩展一个抽象类,我遇到了一个问题:

abstract public class SomeClassA<S extends Stuff> {
  protected ArrayList<S> array;

  public SomeClassA(S s) {
    // ...
  }

  public void someMethod() {
    // Some method using the ArrayList
  }

  abstract public void anotherMethod() {
    // ... 
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我想用另一个抽象类扩展这个类,所以我可以覆盖"someMethod".我试过了:

abstract public class SomeClassB<Z extends Stuff> extends SomeClassA {

  public SomeClassB(Z z) {
    super(z);
  }

  @Override public void someMethod() {
    // Some method using the ArrayList
  }

}
Run Code Online (Sandbox Code Playgroud)

NetBeans没有看到构造函数的任何问题,但我不能在someMethod方法中使用SomeClassA中的ArrayList.所以我尝试过:

abstract public class SomeClassB<Z extends Stuff> extends SomeClassA<S extends Stuff> {

  public …
Run Code Online (Sandbox Code Playgroud)

java generics inheritance abstract

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

标签 统计

c ×2

c++ ×2

generics ×2

abstract ×1

const ×1

inheritance ×1

java ×1

optimization ×1

performance ×1

templates ×1