小编Oru*_*ner的帖子

为什么编译器在模板类中允许这个虚函数?

我知道关于这个话题的线索很少.但让我感到困惑的是我得到的结果与大家所说的不同.

看下面的代码(使用GCC441编译):

#include <iostream>

using namespace std;

template<class T>
class A {
  public:
    A(T &t) : _a(t) {};
    virtual ~A() { cout << "Dtor-A" << endl;};
    virtual void print () { cout << "A: " << _a << endl; }
    T _a;
};

class B : public A<int> {
  public:
    B(int t) : A<int>(t) {}
    ~B() { cout << "Dtor-B" << endl;};
    void print() { cout << "B: " << endl; }
};

int main() {
  B b(2);

  A<int> *a …
Run Code Online (Sandbox Code Playgroud)

c++

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

使用open/print执行SQL语句时如何捕获退出代码?

我使用open/print来使用sqlplus执行SQL语句,如下所示:

open (PLSQL, "|sqlplus -s $db_url");
print PLSQL <<ENDSQL;
... some SQL statements ...
exit;
ENDSQL
close(PLSQL);
Run Code Online (Sandbox Code Playgroud)

我的问题是如果遇到一些错误,如何捕获执行sql语句的退出代码.我认为使用DBI会好得多,但我更愿意找到解决上述问题的方法.非常感谢!

perl

6
推荐指数
2
解决办法
4067
查看次数

哪个版本的libstdc ++.so用于同一系统上的多个GCC

我正在尝试在目前安装和使用gcc 4.3的系统上安装gcc 4.8.我做了一些研究,并且知道可以保留多个版本的gcc.对我来说,使用--program-suffix =选项对我来说是最好的解决方案.但我的问题是,我可以直接在安装旧gcc的地方安装新的gcc 4.8吗?两个版本的库可以混合在同一个lib目录中吗?

更多细节:旧的gcc安装在/ usr/bin,/ usr/lib64中.如果我将新gcc直接安装到同一位置,新的库也将安装/ usr/lib64.这是一个问题吗?gcc编译器知道链接时要使用哪个库吗?

提前谢谢了!

c++ linux gcc

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

条件运算符可以返回引用?

我遇到了一行代码,从未想过它可能会运行良好.我认为条件运算符返回值并且不能与引用一起使用.

一些伪代码:

#include <iostream>

using namespace std;

class A {
public:
  A(int input) : v(input) {};
  void print() const { cout << "print: " << v  << " @ " << this << endl; }
  int v;
private:
  //A A(const A&);
  //A operator=(const A&);
};

class C {
public:
  C(int in1, int in2): a(in1), b(in2) {}
  const A& getA() { return a;}
  const A& getB() { return b;}
  A a;
  A b;
};

int main() {
  bool test = false; …
Run Code Online (Sandbox Code Playgroud)

c++ conditional-operator

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

什么是AIX下的AIX上的'what'命令

我习惯使用什么来查找程序中的某些版本字符串,这通常被定义为c ++代码中的字符串,以"@(#)"开头.

现在我在Linux中找不到它.谁能告诉我我应该做什么?非常感谢!

c++ unix linux version-control

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

为什么指针成员初始化为非零?

我遇到了一件我无法解释的奇怪事情.默认情况下,指针成员不会初始化为零(仅在第二次发生).我知道我忘了在构造函数中初始化它并在d-tor中释放内存.但我无法解释为什么默认情况下指针未初始化为零.下面是WORKS的伪代码.我发布它是为了向你们展示我的意思.在我的真实代码中,它要复杂得多.

到目前为止我的猜测是某处存在内存泄漏.如果有更多可能性,我想听听你的意见.谢谢.

#include <iostream>

class A {
public:
    int *p;
    A () {std::cout << "p in ctor: " << p << std::endl;}
    ~A() {}
    void f(int *i) { p = i;}
};

int main() {
    A *a = new A();
    int c = 0;
    a->f(&c);
    std::cout << "p in step 1:" << a->p << std::endl;
    delete a;
    A *b = new A();
    std::cout << "p in step 2:" << a->p << std::endl;//here works but not in real code
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers memory-leaks

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