小编aia*_*iao的帖子

'override'关键字只是检查重写的虚方法吗?

据我所知,override在C++ 11中引入关键字只不过是一个检查,以确保正在实现overridevirtual函数是基类中的函数.

是吗?

c++ inheritance overriding virtual-functions c++11

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

编译器不会定义implicits的条件(构造函数,析构函数,复制构造函数,复制赋值)

这应该是一个微不足道的问题,但我无法在stackoverflow上明确找到它.

如果用户不提供,将隐式定义以下内容.

  1. default(无参数)构造函数
  2. 复制构造函数
  3. 复制赋值运算符
  4. 析构函数

但是我已经读过某个地方(我现在似乎无法找到),有些情况下编译器不会隐式实现它们.

这些条件是什么?

c++ default-constructor implicits

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

纯虚函数最终函数:C++ 11中的合法函数

class Foo
{
public: 
    virtual int foo() final = 0;
};
Run Code Online (Sandbox Code Playgroud)

编译好.

这不Foo只是浪费空间,而是制造事故吗?或者我错过了什么?

c++ final pure-virtual c++11

18
推荐指数
3
解决办法
2086
查看次数

const引用默认值

可能重复:
如何初始化具有默认值的类的函数参数

#include <string>

void foo1(const std::string& s = std::string());

void foo2(std::string& s = std::string());

void foo3(const std::string s = std::string());

void foo4(std::string s = std::string());
Run Code Online (Sandbox Code Playgroud)

error at foo2(): default argument for ‘std::string& s’ has type ‘std::string {aka std::basic_string<char>}’

我理解编译器的观点,但我不知道这也不适用于foo1()它.

c++ const reference default-value

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

`public`访问限定符和`const`ness.`-Wuninitialized`

class Foo
{
    public:
        const int x;
};

class Bar
{
    private:
        const int x;
};
Run Code Online (Sandbox Code Playgroud)

输出:

test.cpp:10:13: warning: non-static const member ‘const int Bar::x’ in class without a constructor [-Wuninitialized]
Run Code Online (Sandbox Code Playgroud)

为什么会Bar产生警告但不产生警告Foo(显然是因为访问限定符,但逻辑是什么?).

c++ warnings member access-specifier

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

是否可以在不实现的情况下声明一个类?(C++)

我知道这些问题似乎含糊不清,但我想不出任何其他方式来表达它,但是,是否有可能做到这样的事情:

#include<iostream>

class wsx;

class wsx
{
public:
wsx();
}

wsx::wsx()
{
std::cout<<"WSX";
}
Run Code Online (Sandbox Code Playgroud)

c++ class declaration definition forward-declaration

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

const参数与const参考参数

实施1:

foo(const Bar x);
Run Code Online (Sandbox Code Playgroud)

实施2:

foo(const Bar & x);
Run Code Online (Sandbox Code Playgroud)

如果在函数内不更改对象,为什么要复制它(实现1).

这将由编译器自动优化吗?

简介:即使对象const在函数声明中声明,仍然可以通过其他别名编辑对象&.

如果您是编写库的人并且知道您的功能没有这样做,或者该对象足够大以证明每次操作的解除引用成本, foo(const Bar & x);那么就是要走的路.

第2部分:

这将由编译器自动优化吗?

既然我们确定它们并不总是等价的,并且等价的条件是非平凡的,那么编译器通常很难确保它们,所以几乎肯定 没有

c++ optimization alias const reference

8
推荐指数
2
解决办法
4362
查看次数

函数声明中的const关键字位置

可能重复:
C++中的const声明之间的差异

#include <iostream>

class Bar{};

void foo(const Bar x){}  //l5
void foo(Bar x){}        //l6
void foo(Bar const x){}  //l7

////pointer functions

void foo(const Bar* x){} //l11
void foo(Bar* x){}       //l12
void foo(Bar* const x){} //l13
Run Code Online (Sandbox Code Playgroud)

编译器输出:(长话短说l5,l6,l7冲突;但只l12,l13冲突)

untitled.cpp:6:6: error: redefinition of ‘void foo(Bar)’
untitled.cpp:5:6: error: ‘void foo(Bar)’ previously defined here
untitled.cpp:7:6: error: redefinition of ‘void foo(Bar)’
untitled.cpp:5:6: error: ‘void foo(Bar)’ previously defined here
untitled.cpp:13:6: error: redefinition of ‘void foo(Bar*)’
untitled.cpp:12:6: …
Run Code Online (Sandbox Code Playgroud)

c++ pointers const

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

在python中索引嵌套列表

给定data

data = [ [0, 1], [2,3] ]
Run Code Online (Sandbox Code Playgroud)

我想索引列表列表中列表中的所有第一个元素。即我需要索引02

我试过了

print data[:][0]
Run Code Online (Sandbox Code Playgroud)

但它输出完整的第一个列表。即

[0,1]
Run Code Online (Sandbox Code Playgroud)

甚至

print data[0][:]
Run Code Online (Sandbox Code Playgroud)

产生相同的结果。

我的问题具体是如何完成我所提到的。更一般地说,python 如何处理双重/嵌套列表?

python list multidimensional-array python-2.7

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

`assert` in循环

for(unsigned int i = 0; i < x.size(); i++)
    assert(x[i] > 0);
Run Code Online (Sandbox Code Playgroud)

不调试(NDEBUG标志)时,结果是空for循环.是否有一种干净的方法来处理这个问题(不执行空for循环); 最好没有预处理器指令,因为它首先会破坏目的assert.

c++ optimization assert loops

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