小编Mar*_*ork的帖子

C++模板构造函数的特化

我有一个模板化的类A <T,int>和两个typedef A <string,20>和A <string,30>.如何覆盖A <string,20>的构造函数?以下不起作用:

template <typename T, int M> class A;
typedef  A<std::string, 20> one_type;
typedef  A<std::string, 30> second_type;


template <typename T, int M>
class A {
public:
  A(int m) {test= (m>M);}

  bool test;

};


template<>
one_type::one_type() { cerr << "One type" << endl;}
Run Code Online (Sandbox Code Playgroud)

我希望类A <std :: string,20>做一些其他类没有的东西.如何在不更改构造函数的情况下执行此操作A:A(int)?

c++ templates constructor specialization

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

垃圾收集保证

对垃圾收集器有什么保证?

根据我的研究,我找到了:

  • 如果仍然存在对内存的引用,则不会对其进行垃圾回收
  • 如果没有参考:
    • 当它是GC是非确定性的
    • 当GC释放时,终结器将在释放内存之前运行.
    • 无法保证终结者的顺序(所以不要假设父母将在孩子之前运行).

但我真正想知道的是:

是否保证所有内存最终都将被垃圾收集并且终结器(析构函数)在对象上运行(假设程序退出很好).例如,最终退出时没有内存压力的应用程序会强制GC查找所有对象并确保调用终结器(析构函数)(包括静态成员变量)?

我在这个页面上找到了一个引用:http: //www.c-sharpcorner.com/UploadFile/tkagarwal/MemoryManagementInNet11232005064832AM/MemoryManagementInNet.aspx

此外,默认情况下,当应用程序退出时,不会为无法访问的对象调用Finalize方法,以便应用程序可以快速终止.

但我不确定这句话是多么权威.

我还找到了文档: CriticalFinalizerObject

c# garbage-collection

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

在STL地图中排序顺序并设置

用户定义的对象如何在map和set中排序?据我所知,map/set是Sorted Associative Containers:插入的元素是根据它所拥有的键进行排序的.

但是map和set内部用于operator >对元素进行排序.

从SGI站点,我有以下示例:

struct ltstr
{
    bool operator()(const char* s1, const char* s2) const
    {
        return strcmp(s1, s2) < 0;
    }
};

int main()
{
    map<const char*, int, ltstr> months;

    months["january"] = 31;
    months["february"] = 28;
    months["march"] = 31;
    months["april"] = 30;
    months["may"] = 31;
    months["june"] = 30;
    months["july"] = 31;
    months["august"] = 31;
    months["september"] = 30;
    months["october"] = 31;
    months["november"] = 30;
    months["december"] = 31;

    cout << "june -> " << months["june"] << endl; …
Run Code Online (Sandbox Code Playgroud)

c++ stl

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

为什么std :: copy(从istream到ostream)会引发ios :: failure异常?

以下代码应将数据从wifstream复制到wcout.复制内容后,程序将抛出ios :: failure异常.

#include <string>
#include <iostream>
#include <sstream>
#include <fstream>
#include <locale>
#include <iterator>
#include <algorithm>


int main(void)
{
    std::locale::global(std::locale(""));

    std::wifstream is;
    is.exceptions( std::ios::failbit | std::ios::badbit );
    is.open("test.ts", std::ios::binary);

    is >> std::noskipws;

    std::istream_iterator<wchar_t, wchar_t> in(is);
    std::istream_iterator<wchar_t, wchar_t> end;

    std::copy(in, end,
              std::ostream_iterator<wchar_t, wchar_t>(std::wcout));

    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

如果出现任何问题,流应该只抛出一个异常(参见异常掩码),但不会抛出异常.

c++ stl stream

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

将基类添加到"新建C++类"对话框

在Eclipse中:

当我选择In"File/New/Class/Add ..."时,

我可以看到来自boost ::,std ::,sql ::和我当前项目的基类候选者.

我想将Gnome类(Gtk ::,Glib ::等)添加到候选列表中.有谁知道怎么做?

c++ namespaces class eclipse-cdt

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

跨平台构建环境

作为优秀的开发人员,我们尽可能保持代码符合标准,以帮助在平台之间移植.但是有哪些工具可以帮助我们在多个平台上以统一的方式构建代码.

*nix系列有makeWindows需求nmake.

我读过关于SCons但从未在愤怒中使用它.你最喜欢的构建工具是什么,为什么你觉得它有效并且有任何限制(支持不良的平台等).

跨平台IDE也是如此.

build-automation cross-platform build-environment

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

OS; 资源自动清理

从这个答案:什么是C++终止处理程序右Thing(TM)?

当应用程序退出时,操作系统会自动清理"是"和"不"的资源列表会很不错.在您的回答中,如果您可以指定操作系统/资源并且最好是指向某个文档(如果适用)的链接,那将是很好的.

显而易见的一个:

内存:是自动清理.题.有没有例外?

resources operating-system

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

OS-X支持std :: tr1

什么是当前支持tr1或Mac上的新C++ 0x

我知道随XCode提供的gcc总是有几个版本,可以从gcc.gnu.org获得,所以我只是想知道现代支持的状态是什么.

例如,我是否需要下载boost以使用shared_ptr或者我可以从std :: tr1获取它吗?

c++ macos tr1 c++11

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

网络爬虫的典型礼貌因素?

网络抓取工具的典型礼貌因素是什么?

除了始终服从robot.txt
"Disallow:"和非标准"Crawl-delay:"

但是,如果站点未指定显式爬网延迟,则应将默认值设置为什么?

web-crawler website-admin

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

C++析构函数的工作原理

可能重复:
C++ 析构函数中的对象销毁在C++中
检查

我想要一个简单的程序来看看析构函数在C++中是如何工作的?

我基本上不明白什么时候调用析构函数.

c++ destructor raii c++-faq

7
推荐指数
0
解决办法
389
查看次数