- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这似乎是一个基本问题,但我没有看到它被问到:
假设以下简单情况:
没有虚拟成员。
虚拟继承用于允许多个路径指向同一基。
就访问最派生类的成员所需的时间而言,虚拟继承的代价是多少?特别是,如果价格不为零,它是仅适用于通过多条路径继承的成员还是也适用于其他成员?
最佳答案
What is the price of virtual inheritance in terms of the time needed to access the members of the most derived class?
一个偏移查找和一个加法(2 条指令和一个内存获取)
In particular, if there is a non-zero price, does it pertain only to the members that are inherited through more than one path or to other members as well?
是的,但并非总是如此。如果编译器有足够的信息证明不需要通过间接访问,则可以在编译时缩短查找。
It'd probably be good to clarify exact when this would be the case. – Nicol Bolas
老师说的好
这里有一个例子来证明这一点。使用 -O2 和 -S 选项编译以查看优化效果。
#include <memory>
#include <string>
enum class proof {
base,
derived
};
// volatile forces the compiler to actually perform reads and writes to _proof
// Without this, if the compiler can prove that there is no side-effect of not performing the write,
// it can eliminate whole chunks of our test program!
volatile proof _proof;
struct base
{
virtual void foo() const {
_proof = proof::base;
}
virtual ~base() = default;
};
struct derived : base
{
void foo() const override {
_proof = proof::derived;
}
};
// factory function
std::unique_ptr<base> make_base(const std::string&name)
{
static const std::string _derived = "derived";
// only create a derived if the specified string contains
// "derived" - on my compiler this is enough to defeat the
// optimiser
if (name == _derived) {
return std::make_unique<derived>();
}
else {
return {};
}
}
auto main() -> int
{
// here the compiler is fully aware that p is pointing at a derived
auto p = std::make_unique<derived>();
// therefore the call to foo() is made directly (in fact, clang even inlines it)
p->foo();
// even here, the compiler 'knows' that b is pointing at a 'derived'
// so the call to foo is made directly (and indeed on my compiler, completely
// inlined)
auto b = std::unique_ptr<base>(new derived);
b->foo();
// here we assign a derived to b via indirect construction through a string.
// Unless the compiler is going to track this string and follow the logic in make_base
// (and on my compiler it does not) this will prevent the virtual call to foo() from
// being turned into a direct call.
// Therefore, this call will be made via the virtual function table of *b
b = make_base("derived");
if (b) {
b->foo();
}
return 0;
}
关于c++ - 虚拟继承的价格是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34256074/
我需要一些帮助。 我希望“总计”由“数量*价格=总计”计算(到目前为止没问题)。问题是我还需要通过“总/价格=数量”来计算“数量”,即如果一个字段发生更改,另一个字段也会自动更改。 我做了一个非常简单
我试图将每件商品的数量和价格相乘来计算总数,但我的警报中出现错误。 $.each(data.items, function(index, d){ var calcultest = d.pric
我想获得格式化的价格但没有货币符号,我只想使用 magento 的标准功能! $product->getFinalPrice(); => 19.9900 Mage::helper('core')->f
我正在尝试获取特定月份和年份中所有父类别的总价格。父类别是 parent_id == 0 的任何类别。我的查询如下所示: SELECT ROUND(SUM(od.total_price)) a
请帮我摆脱我的头痛..提前我为我的糟糕语言道歉,无论是英语还是mysql。希望有人能理解这个问题..:) 我有一个数据库,任何人都可以记录各个商店中各种产品的价格。以下查询是一个半理论示例,可能根本不
下面是我需要在数据库中设计的示例: 会有一个价格选项,如果有的话,会有一个特价选项,然后我想知道如果我希望其中一个选项是“免费”的,我该怎么做。 另请参阅根据所在国家/地区会有不同的货币。这是我的想法
商品价格格式 999,99 999 - 1 ..4 digits , - comma sign marks decimal point 99 - 2 digits after price Postg
我有这个表 stk +---------+--------------+ | Field | Type | +---------+--------------+ | id
是否有一个简单的格式化程序可以将我的字符串格式化为价格? 所以我的字符串是:300000 我想用空格来“300 000” or 1000000 "1 000 000" 张国荣 最佳答案 这样做: St
我想知道是否可以使用不依赖于 Excel 应用程序本地化(欧盟/美国)的 Excel 公式来自定义数字格式? 例如,我的值为 1291660。 然后使用公式=TEXT(A1;"# ##0,00") .
这是我的代码,对于价格 slider : $("#price-slider").ionRangeSlider({ min: 130, max: 575, onChange :
用户可以使用价格创建一个新实体。价格可以使用不同的货币(EUR,USD ...),因此我们可以乘以(price * convert_rate)得到实际价格。 我想做的是根据价格过滤记录,具体取决于前端
我正在尝试隐藏小数位在类型输入字段上,例如 数字从0.00开始 因此,输入字段中的第一个位置将为 0.00 我输入的1比它应该变成0.01 我输入的2比它应该变成0.12 比 0 所以它应该变成 1.
$res=mysql_query($qry); while($row= mysql_fetch_array($res)) { echo "".$row['Food_Name']." ".$row['P
我们正在为我们的新项目寻找信用卡网关。那里一片困惑,所有人都想把你切成碎片。每次我与他们交谈时,他们都有不同的费率,每次更新报价时,他们都会更改一些价格。 我们正在使用 .net、C#、asp.net
我已经创建了一个 jQuery 价格 slider ,但我不确定如何让过滤区域以实际价格范围开始?目前它有“$[object Object] - $[object Object]”,而我希望它有“$2
我已经创建了 jquery 价格 slider ,但我不确定如何过滤我的结果,以便在滑动时您只能看到具有该值范围内的产品。 HTML: Price range:
我有一个页面,其中有一个表格,我们可以在其中选择一个产品,输入它的数量和价格,然后应在最后一列中计算金额,并应添加新行以输入更多产品,直到我们完成为止。
我创建了电子商务网站,即将提供午餐和晚餐服务。我在这里提出问题/问题是因为我知道这里有很多可以帮助我的传奇人物。我在网站上添加了套餐/计划部分。 1. Weekly 2. Monthly 以下是订
我的网站需要一个简单的 jQuery 价格 slider 。从 0 英镑到 1000 英镑不等。 假设浏览器将 slider 设置为 100 英镑(例如),然后我需要一个立即购买按钮,该按钮将 sli
我是一名优秀的程序员,十分优秀!