这是一个功课问题.对于以下代码,
#include <iostream>
using namespace std;
class A
{
public:
virtual void f(){}
};
class B
{
public:
virtual void f2(){}
};
class C: public A, public B
{
public:
virtual void f3(){}
};
class D: public C
{
public:
virtual void f4(){}
};
int main()
{
cout<<sizeof(D)<<endl;
}
Run Code Online (Sandbox Code Playgroud)
输出为:8
任何人都可以解释它是如何8字节?如果vtable实现依赖于编译器,那么在采访中我应该回答这类问题?虚拟基类怎么样?
编辑:我正在使用32位平台.
Class B;
B *b = new B(); // default constructor
B *b1 = new B(10); // constructor which takes an argument B(int x)
Run Code Online (Sandbox Code Playgroud)
但是,如果我们要编写自定义版本new,则语法为
Class B
{
/*...*/
static void* operator new(size_t size);
}
Run Code Online (Sandbox Code Playgroud)
如何将语句new B()转换为函数调用
operator new(sizeof(B))?
它如何跟踪调用哪个构造函数,即它如何区分new B()和new B(int x)?
被new实现为C++中的宏?
我正在开发一个使用Wordnet概念层次结构进行操作的应用程序.我发现数据库中缺少一些我需要的单词.是否有API或工具,或任何其他方式我可以插入新单词,编辑结构等?(我正在使用Wordnet 3.0.)
谢谢.
我正在编写一个类似于std :: string的字符串类作为家庭作业,但我无法弄清楚如何返回一个不会导致内存泄漏的c字符串,并保证保持不变直到它不存在使用时间更长.我目前有:
const char* string::c_str()
{
char c[_size+1];
strncpy(c,_data,_size);
c[_size]='\0';
return c;
}
Run Code Online (Sandbox Code Playgroud)
但是在调用之后不久就会覆盖内容.如果我进行动态分配,我会有内存泄漏,或者任何时候只能从给定的字符串中存在一个c字符串.我怎么能避免这个?
我想为某个类型实现移动构造函数(没有复制构造函数),该类型需要是一个值类型boost::unordered_map.我们称之为这种类型Composite.
Composite 有以下签名:
struct Base
{
Base(..stuff, no default ctor) : initialization list {}
Base(Base&& other) : initialization list {}
}
struct Composite
{
Base member;
Composite(..stuff, no default ctor) : member(...) {}
Composite(Composite&& other) : member(other.member) {} // <---- I want to make sure this invokes the move ctor of Base
}
Run Code Online (Sandbox Code Playgroud)
我想写这个,所以boost::unordered_map< Key , Composite >不需要复制构造函数,只需使用移动构造函数.如果可能的话,我不想Base在移动构造函数的初始化列表中使用复制构造函数Composite.
这可能吗?
我有一个需要验证半宽和全宽日文字符的日文项目,半宽度允许14个字符,全宽度允许7个字符.
有没有人知道如何实现它?
现在我的模特
class Customer
validates_length_of :name, :maximum => 14
end
Run Code Online (Sandbox Code Playgroud)
不是一个好选择
我目前正在使用ror 2.3.5可以使用全宽和半宽
我们正在开发一个用C++开发的模块,但是考虑到新的C++ 11,我正在考虑迁移到那个.
如何进行?两者是相同的还是有一些编译器依赖?
我的软件目前支持Windows和Linux.我正在使用Microsoft Visual Studio以及GCC来构建它.
总的来说,如果有的话需要做哪些改变?
我是python的新手,我开始使用后缀树.我可以构建它们,但是当字符串变大时我遇到了内存问题.我知道它们可以用于处理大小为4 ^ 10或4 ^ 12的DNA字符串,但每当我尝试实现一种方法时,我最终会遇到内存问题.
这是我生成字符串和后缀树的代码.
import random
def get_string(length):
string=""
for i in range(length):
string += random.choice("ATGC")
return string
word=get_string(4**4)+"$"
def suffixtree(string):
for i in xrange(len(string)):
if tree.has_key(string[i]):
tree[string[i]].append([string[i+1:]][0])
else:
tree[string[i]]=[string[i+1:]]
return tree
tree={}
suffixtree(word)
Run Code Online (Sandbox Code Playgroud)
当我达到4**8左右时,我遇到了严重的内存问题.我对此很陌生,所以我肯定我错过了保存这些东西的东西.任何建议将不胜感激.
作为注释:我想进行字符串搜索以在非常大的字符串中查找匹配的字符串.搜索字符串匹配大小为16.因此,这将在大字符串中查找大小为16的字符串,然后移动到下一个字符串并执行另一个搜索.由于我将进行大量搜索,因此建议使用后缀树.
非常感谢
假设我有一个文件system.h,其中有以下结构
typedef struct Foo {
int count;
uint32 world;
Temp id;
} Foo;
typedef struct Temp {
uint64 id;
} Temp;
Foo bar;
Run Code Online (Sandbox Code Playgroud)
现在我需要一个类似 的宏,DUMP_STRUCT(bar)它递归地打印 bar (Foo 类型)的所有成员。
是否有任何解析器/脚本(最好是在 php/python 中)可以解析 C 文件或从可执行文件中获取 dwarf 的信息并创建类似于的函数DUMP_STRUCT?