相关疑难解决方法(0)

什么是复制和交换习语?

这个成语是什么,什么时候应该使用?它解决了哪些问题?当使用C++ 11时,成语是否会改变?

虽然在许多地方已经提到过,但我们没有任何单一的"它是什么"问题和答案,所以在这里.以下是前面提到的地方的部分列表:

c++ c++-faq copy-constructor assignment-operator copy-and-swap

1907
推荐指数
5
解决办法
34万
查看次数

C++ SFINAE的例子?

我想进入更多的模板元编程.我知道SFINAE代表"替换失败不是错误".但是有人能告诉我SFINAE的用处吗?

c++ templates metaprogramming sfinae

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

我们何时必须使用复制构造函数?

我知道C++编译器为类创建了一个复制构造函数.在这种情况下,我们必须编写用户定义的复制构造函数吗?你能举一些例子吗?

c++ copy-constructor

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

你有编码标准吗?如果是这样,他们是如何执行的?

我参与了几个项目,我们花了很多时间讨论和编写精细的编码标准,涵盖从语法布局到实际最佳实践的所有内容.但是,我也发现这些很少被完全遵循.许多开发人员似乎毫不犹豫地拒绝仅基于编码标准违规的代码审查.即违规将定期提交到存储库.

我的问题是:你有编码标准吗?它们涵盖了什么?他们是否跟着每个人?你做了什么(如果有的话)以确保每个人都遵守标准?

我知道,有一个类似的问题在这里,但我担心的是没有那么多你怎么能做到这一点,但你实际上是如何去了解它,什么是预期收益?

coding-style

21
推荐指数
1
解决办法
1527
查看次数

从动态类型信息创建新对象

在C++中,有没有办法查询对象的类型,然后使用该信息动态创建相同类型的新对象?

例如,假设我有一个简单的3类层次结构:

class Base
class Foo : public Base
class Bar : public Base
Run Code Online (Sandbox Code Playgroud)

现在假设我给你一个类型为Base的对象 - 实际上是Foo类型.有没有办法查询类型并使用该信息以后来创建Foo类型的新对象?

c++ rtti

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

现有标准样式和编码标准文档

以下是针对即将到来的C++项目提出的.

  • Sutter和Alexandrescu撰写的C++编码标准
  • JSF Air Vehicle C++编码标准
  • C++风格的元素
  • Scott Meyers的有效C++第3版

还有其他选择吗?或者上面的列表应该在C++项目中使用什么?

一些相关链接

c++ documentation standards coding-style

14
推荐指数
4
解决办法
3457
查看次数

成语与模式

在编程的背景下,习语如何与模式不同?

我可以互换地使用这些术语,通常遵循我听过的最流行的方式,或者最近在当前对话中调用它的方式,例如"复制交换习语"和"单例模式".

我能想出的最好的区别是,几乎字面意思被复制的代码通常被称为模式,而代码意味着不那么字面意思的代码通常被称为习语,但这种情况甚至不总是如此.这似乎不仅仅是一种风格或流行语的差异.这符合您对术语使用方式的看法吗?有语义差异吗?

language-agnostic design-patterns idioms

14
推荐指数
3
解决办法
3473
查看次数

你最喜欢的C++习语是什么?

可能重复:
你最喜欢的C++ Coding Style成语是什么

亲爱的C++粉丝,

你能在这里列出你最喜欢的C++习语吗?最好列出那些有用但尚未众所周知的内容.

首先,我把我的一个:

为了避免繁琐的重复for (size_t i = 0; i < n; ++i) {...},我使用这样的宏:

#define LOOP(n) for (size_t _i = 0; _i < n; ++_i)
Run Code Online (Sandbox Code Playgroud)

_i是绑定使用的占位符.

所以我可以写:

vector<int> coll(100);
LOOP (100)
{
    coll[_i] = _i;
}

LOOP (100)
{
    auto a = _i;
    LOOP (100)
    {
        auto b = _i;
        cout << a << b;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ idioms

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

析构函数调用(堆栈)变量之间的赋值?

matrix m1(5,5); 
matrix m2(5,5); 
m1 = matrix(m2); 
Run Code Online (Sandbox Code Playgroud)

对于上面的代码(对于任意类,矩阵),当m2的信息被复制到它时,是否会为与m1相关的信息调用析构函数?

c++ destructor lifetime

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

超载运算符中的分段错误=

我在为一个FeatureRandomCounts类重载赋值运算符时遇到了一个seg错误,它有_rects作为指针成员指向FeatureCount和大小rhs._dim的数组,其他日期成员是非指针:

FeatureRandomCounts &  FeatureRandomCounts::operator=(const FeatureRandomCounts &rhs)  
{  
  if (_rects) delete [] _rects;  

  *this = rhs;  // segment fault

  _rects = new FeatureCount [rhs._dim];  
  for (int i = 0; i < rhs._dim; i++)  
  {  
    _rects[i]=rhs._rects[i];  
  }  

  return *this;    
}
Run Code Online (Sandbox Code Playgroud)

有人有一些线索吗?感谢致敬!

c++ overloading segmentation-fault

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