小编Rob*_*edy的帖子

有没有办法在一个命令中获取git根目录?

Mercurial有一种打印根目录(包含.hg)的方法

hg root
Run Code Online (Sandbox Code Playgroud)

在git中是否有类似的东西来获取包含.git目录的目录?

git version-control

613
推荐指数
18
解决办法
18万
查看次数

为什么派生类中的重写函数会隐藏基类的其他重载?

考虑一下代码:

#include <stdio.h>

class Base {
public: 
    virtual void gogo(int a){
        printf(" Base :: gogo (int) \n");
    };

    virtual void gogo(int* a){
        printf(" Base :: gogo (int*) \n");
    };
};

class Derived : public Base{
public:
    virtual void gogo(int* a){
        printf(" Derived :: gogo (int*) \n");
    };
};

int main(){
    Derived obj;
    obj.gogo(7);
}
Run Code Online (Sandbox Code Playgroud)

得到此错误:

>g++ -pedantic -Os test.cpp -o test
test.cpp: In function `int main()':
test.cpp:31: error: no matching function for call to `Derived::gogo(int)'
test.cpp:21: note: candidates are: virtual …

c++ polymorphism overriding

212
推荐指数
3
解决办法
5万
查看次数

为什么两个不同的概念都被称为"堆"?

为什么运行时堆用于C风格语言中的动态内存分配,数据结构都称为"堆"?有一些关系吗?

c++ heap terminology heap-memory

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

std :: vector元素是否保证是连续的?

我的问题很简单:std :: vector元素是否保证是连续的?在order word中,我可以使用指向std :: vector的第一个元素的指针作为C数组吗?

如果我的记忆力很好,那么C++标准就没有这样的保证.但是,如果元素不连续,那么std :: vector要求几乎不可能满足它们.

有人可以澄清一下吗?

例:

std::vector<int> values;
// ... fill up values

if( !values.empty() )
{
    int *array = &values[0];
    for( int i = 0; i < values.size(); ++i )
    {
        int v = array[i];
        // do something with 'v'
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ standards vector

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

为什么C#允许{}代码块没有前面的语句?

为什么C#允许代码块前没有声明(例如if,else,for,while)?

void Main()
{
    {   // any sense in this?
        Console.Write("foo");
    }
}
Run Code Online (Sandbox Code Playgroud)

c# syntax language-design

83
推荐指数
5
解决办法
7197
查看次数

是否可以在编译时打印出C++类的大小?

是否有可能在编译时确定C++类的大小?

我似乎记得模板元编程方法,但我可能会弄错...


抱歉没有更清楚 - 我希望在构建输出窗口中打印大小

c++

61
推荐指数
3
解决办法
2万
查看次数

我什么时候应该使用GCC的-pipe选项?

GCC 4.1.2的文件有这样说的-pipe选项:

-管

使用管道而不是临时文件进行编译的各个阶段之间的通信.这无法在汇编程序无法从管道读取的某些系统上运行; 但GNU汇编程序没有问题.

我假设我能够从错误消息中判断我的系统的汇编程序是否不支持管道,所以除了这个问题,我何时使用该选项才有意义?决定使用它应该考虑哪些因素?

gcc pipe compiler-options

56
推荐指数
5
解决办法
4万
查看次数

"var"和"out"参数之间有什么区别?

声明的参数与var声明的参数之间的区别是什么out?编译器如何区别对待它们(例如,通过生成不同的代码,或通过更改它发出的诊断)?或者,不同的修饰符是否只允许程序员记录参数的预期用途?做了什么样的影响类型的参数对此事?

delphi parameters pass-by-reference

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

为什么Clang和VS2013接受移动大括号初始化的默认参数,但不接受GCC 4.8或4.9?

就像标题所暗示的那样,我有一个简短的演示程序可以编译所有这些编译器,但是在使用gcc 4.8和gcc 4.9进行编译后运行的核心转储:

任何想法为什么?

#include <unordered_map>

struct Foo : std::unordered_map<int,int> {
    using std::unordered_map<int, int>::unordered_map;
    // ~Foo() = default; // adding this allows it to work
};

struct Bar {
    Bar(Foo f = {}) : _f(std::move(f)) {}
    // using any of the following constructors fixes the problem:
    // Bar(Foo f = Foo()) : _f(std::move(f)) {}
    // Bar(Foo f = {}) : _f(f) {}

    Foo _f;
};

int main() {
    Bar b;

    // the following code works as expected
    // Foo f1 …
Run Code Online (Sandbox Code Playgroud)

c++ gcc c++11 list-initialization

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

函数try块何时有用?

我想知道程序员何时使用函数try块.什么时候有用?

void f(int i)
try
{
   if ( i  < 0 ) 
      throw "less than zero";
   std::cout << "greater than zero" << std::endl;
}
catch(const char* e)
{
    std::cout << e << std::endl;
}

int main() {
        f(1);
        f(-1);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:(在ideone处)

greater than zero
less than zero
Run Code Online (Sandbox Code Playgroud)

编辑:因为有些人可能认为函数定义的语法不正确(因为语法看起来不熟悉),我要说它不是不正确的.它叫做function-try-block.参见C++标准中的§8.4/ 1 [dcl.fct.def].

c++ function function-try-block

36
推荐指数
6
解决办法
9144
查看次数