小编The*_* do的帖子

如何正确初始化对象.[C++]

我在之前的一个问题中提到过,我正在阅读Herb Sutter和Andrei Alexandrescu撰写的"C++编码标准"一书.在其中一章中他们说的是这样的:

始终在构造函数体中而不是在初始化列表中执行非托管资源获取,例如其结果未立即传递给智能指针构造函数的新表达式.

这是否意味着我应该使用这种形式的构造(假设data_3_必须用new初始化):

SomeClass(const T& value, const U& value2, const R& value3)
    : data_(value), data_2_(value2)
{
    data_3_ = new value3;
}
Run Code Online (Sandbox Code Playgroud)

代替:

SomeClass(const T& value, const U& value2, const R& value3)
    : data_(value), data_2_(value2), data_3_(new value3)
    // here data_3_ is initialized in ctor initialization list
    // as far as I understand that incorrect way according to authors
{
}  
Run Code Online (Sandbox Code Playgroud)

提前致谢.

PS如果这就是他们的意思,为什么他们使用术语非托管资源获取?我一直认为这些资源是"手动管理"的?

PS 2.我很抱歉,如果这篇文章中有任何格式问题 - 我不得不承认 - 我绝对讨厌在这个论坛上格式化的方式.

c++ initialization

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

为什么从std :: map插入不想更新?[C++]

我试图将相同的键多次插入到地图中但具有不同的值.它不起作用.我知道operator []做了这个工作,但我的问题是,如果插入的这种行为是正确的吗?不应该插入()插入?我不知道标准是什么.不幸的是我没有它(标准的C++)所以我无法检查.
谢谢你有用的ansers.

c++ map

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

是否有很长的定义?

在哪里检查是否定义了long long类型?我想做这样的事情:

#ifdef LONGLONG
#define long_long long long
#else 
#define long_long long
#endif
Run Code Online (Sandbox Code Playgroud)

c++

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

Bjarne会犯错吗?(虽然解释模板),或者我还是不明白?

伙计们,我正在从"The C++ Programming Language 3rd ed"做练习.在页340上有一个功能的例子:

template <class T, class C = Cmp<T> > // Here is a default argument
// But as far as I'm concerned it's illegal to have a default argument in
// a function template
        int compare (const String<T>& str1, const String<T>& str2)
        {
        /*Some code*/
        }
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:
书中是否有错误或者我错了?

c++ templates

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

在Boost :: test中报告异常

使用boost::test框架,有没有办法检测是否从函数抛出异常(某种类型)?

c++ boost-test

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

SFINAE的问题

为什么这个代码(M类中的fnc值)不能通过SFINAE规则解决?我收到一个错误:

Error   1   error C2039: 'type' : is not a member of
                                   'std::tr1::enable_if<_Test,_Type>'  
Run Code Online (Sandbox Code Playgroud)

当然类型不是成员,它没有在enable_if的这个通用版本中定义,但是如果bool为真,并且如果它是假的则不实例化那么这不是fnc的这个版本背后的全部想法吗?可以请有人向我解释一下吗?

#include <iostream>
#include <type_traits>

using namespace std;

template <class Ex> struct Null;
template <class Ex> struct Throw;

template <template <class> class Policy> struct IsThrow;

template <> struct IsThrow<Null> {
    enum {value = 0};
};

template <> struct IsThrow<Throw> {
    enum {value = 1};
};

template <template <class> class Derived>
struct PolicyBase {
    enum {value = IsThrow<Derived>::value};
};

template<class Ex>
struct Null : PolicyBase<Null> { };

template<class …
Run Code Online (Sandbox Code Playgroud)

c++ templates sfinae

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

typeid不返回正确的类型

cout << typeid(int&).name();  
Run Code Online (Sandbox Code Playgroud)

在我看来,这应该int&作为一种类型而不是一种类型返回int,而是在GCC 4.5.1和VS2010 SP1 beta上返回int.为什么是这样?

c++ typeid

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

函数/方法的后置条件

有没有人记录过具有前后条件的函数或方法?(我问,因为我的老师说这是正式/正确的方式):

传说:(因为我无法输入特殊字符)3 - 将其读作"存在"和"存在"
E - 是(如在集合中)的成员
A - 对于所有
- > - 暗示

假设s是非空字符串.设B(s)是给出字符串s中位置索引的整数集.
这里开始记录这个函数:

int FirstOccurence(String s, Char c)   
precondition: 
  (s.lenght() > 0) && 3 int i in B(s) [s.charAt(i) == c]    
Run Code Online (Sandbox Code Playgroud)

那是等待后置条件的前提条件;)

postcondition: 
  (FirstOccurence(s,c) E B(s)) && (s.charAt(FirstOccurence(s,c)) == c) && 
     A int i B(s)[(i < FirstOccurence(s,c)) --> !(s.charAt(i) == c) ]  
Run Code Online (Sandbox Code Playgroud)

你们中的任何一个人是否曾经遇到过在现实世界中记录功能/方法的方式?

c# c++ java math documentation

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

无法将INT_MIN的值分配给long long

signed long long value = -2147483648;
    cout << ((signed long long)value);
Run Code Online (Sandbox Code Playgroud)

输出2147483648(没有减号),为什么?

c++ built-in-types

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

将字符串文字添加到 static_assert

有没有办法结合 static_assert 的输出?我的意思是这样的:

template<class T>
struct X
{
static_assert(std::is_signed<T>::value, "Type " + T + " must be signed.");//this doesn't work
};
Run Code Online (Sandbox Code Playgroud)

c++ static-assert

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