小编眠りネ*_*ネロク的帖子

std :: string length()和size()成员函数

我正在阅读这个问题的答案,发现实际上有一个方法length()需要std::string(我总是使用size()).在std::string课堂上有这种方法有什么特别的原因吗?我读过MSDN和CppRefernce,它们似乎表明size()和之间没有区别length().如果是这样的话,是不是让这个班级的用户更加困惑?

c++ string size stl

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

如何在C++中将int转换为枚举?

如何在C++中将int转换为枚举?

例如:

enum Test
{
    A, B
};

int a = 1;
Run Code Online (Sandbox Code Playgroud)

如何转换a为Test :: A类型?

c++ enums casting

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

为什么std :: map实现为红黑树?

为什么std::map实现为红黑树

那里有几个平衡的二叉搜索树(BST).选择红黑树的设计权衡是什么?

c++ dictionary stl binary-search-tree data-structures

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

C++在哪里初始化静态const

我上课了

class foo {
public:
   foo();
   foo( int );
private:
   static const string s;
};
Run Code Online (Sandbox Code Playgroud)

s源文件中初始化字符串的最佳位置在哪里?

c++ static initialization constants

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

运算符重载:成员函数与非成员函数?

我读到一个声明为成员函数的重载运算符是非对称的,因为它只能有一个参数而另一个自动传递的参数是this指针.所以没有比较它们的标准.另一方面,声明为a的重载运算符friend对称的,因为我们传递两个相同类型的参数,因此可以对它们进行比较.

我的问题是,当我仍然可以将指针的左值与参考值进行比较时,为什么会选择朋友?(使用非对称版本提供与对称相同的结果)为什么STL算法仅使用对称版本?

c++ operator-overloading member-functions friend-function non-member-functions

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

如何在向量增长时强制执行移动语义?

我有一个std::vector特定类的对象A.该类非常重要,并且定义了复制构造函数移动构造函数.

std::vector<A>  myvec;
Run Code Online (Sandbox Code Playgroud)

如果我用A对象填充向量(使用例如myvec.push_back(a)),则向量将增大,使用复制构造函数A( const A&)来实例化向量中元素的新副本.

我可以以某种方式强制执行类的移动构造函数A而不是使用它吗?

c++ resize vector move-semantics c++11

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

"空"构造函数或析构函数是否会与生成的构造函数或析构函数执行相同的操作?

假设我们有一个(玩具)C++类,如下所示:

class Foo {
    public:
        Foo();
    private:
        int t;
};
Run Code Online (Sandbox Code Playgroud)

由于没有定义析构函数,因此C++编译器应该自动为类创建一个析构函数Foo.如果析构函数不需要清理任何动态分配的内存(也就是说,我们可以合理地依赖编译器给我们的析构函数),那么将定义一个空的析构函数,即.

Foo::~Foo() { }
Run Code Online (Sandbox Code Playgroud)

做与编译器生成的一样的事情?那个空构造函数怎么样 - 也就是说,Foo::Foo() { }

如果存在差异,它们存在于何处?如果没有,一种方法优于另一种方法吗?

c++ oop constructor destructor class

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

C++抽象类:构造函数是或否?

具有一个(或多个)虚拟纯函数的类是抽象的,并且它不能用于创建新对象,因此它没有构造函数.

我正在读一本提供以下示例的书:

class Employee {
   public:
       Employee(const char*, const char*);
       ~Employee();
       const char* getFirstName() const;
       const char* getLastName() const;


       virtual double earnings() const=0  // pure virtual => abstract class
       virtual void print() const

  private:
       char* firstName, lastName;
};
Run Code Online (Sandbox Code Playgroud)

如果类是抽象的,为什么我们有一个构造函数?它稍后使用此类(Boss是公共派生的Employee):

void Boss::Boss (const char* first, const char* last, double s)
     : Employee (first, last)
Run Code Online (Sandbox Code Playgroud)

c++ constructor class abstract

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

静态constexpr和C++ 17中的静态内联变量有什么区别?

使用C++ 17,我们得到内联变量.

其中一个用途是在类中定义常量字段.

那么这两个常量定义之间的区别是什么:

class MyClass {
    static constexpr int myFirstVar = 10;
    static const inline int mySecondVar = 100;
};
Run Code Online (Sandbox Code Playgroud)

当然constexprmyFirstVar隐式内联.

什么是更好的选择,使用constexprinline

注意:当你不需要constness时,那就inline更容易了.随着constexpr你没有这样的选择.

c++ c++17

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

如何配置sqlite以默认显示标头

有没有办法配置sqlite3,以便默认显示标题?

我知道我可以.headers on用来打开标题,但每次启动客户端时我都要继续键入它,因为设置不会在会话之间粘连.我希望标题永久保存.

sqlite config header

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