可变参数模板有很多优点,但有时候<cstdarg>应该使用C风格的可变参数函数(使用)吗?
我正在使用带有 C++ 的 boost asio 库。我发现 io_service 和 io_context 有相似之处。例如,两者都有方法运行和其他方法。有人可以请详细说明这两个类之间的差异(如用法、概念思想、结构差异等)
我正在使用 Inno Setup。我想要两个自定义页面,例如:
var
PasswordEdit: TPasswordEdit;
UserEdit: TEdit;
Page: TWizardPage;
Page2: TWizardPage;
...
Page := CreateCustomPage(wpWelcome, 'Page1', '');
Page2 := CreateCustomPage(wpWelcome, 'Page2', '');
Run Code Online (Sandbox Code Playgroud)
而是Page2出现在面前Page。这是创建更多自定义页面的正确方法吗?
我使用的是 c++ 14。我需要在我的类中使用静态常量字符串。但是当我写
class myClass
{
static constexpr const std::string S="aa";
}
Run Code Online (Sandbox Code Playgroud)
它不编译。编译器(g++)的结果是
class myClass
{
static constexpr const std::string S="aa";
}
Run Code Online (Sandbox Code Playgroud)
如果我用字符指针写它,如:
class myClass
{
static constexpr const *char S="aa";
}
Run Code Online (Sandbox Code Playgroud)
它被编译。
我知道字符串可以在课外初始化。我的问题是为什么不编译第一个变体,第二个变体。我想知道标准怎么说。
我尝试将指针向量设置为另一个向量的元素
vector<int> vecInt;
vector<int*> vecPInt;
int main()
{
vecInt.push_back(1);
vecPInt.push_back(&vecInt[0]);
vecInt.push_back(1);
vecPInt.push_back(&vecInt[1]);
for(auto v:vecInt)
{
cout<<v<<"\n";
}
for(auto v:vecPInt)
{
cout<<*v<<"\n";
}
Run Code Online (Sandbox Code Playgroud)
}
但结果是
1
1
11717664
1
还有另一种方法可以做到这一点.但为什么在这种情况下这是行为?
我在反汇编程序(浮点逻辑c ++)中找到了以下汇编代码。
842: movss 0x21a(%rip),%xmm0
Run Code Online (Sandbox Code Playgroud)
我知道,当进程rip将一直为842且此0x21a(%rip)将为const。使用该寄存器似乎有些奇怪。
我想知道使用rip相对地址代替其他寻址有什么好处。
我用方法创建了一个类,它返回对成员的引用(封装不好)。我正在使用自动重新调整功能
class classA
{
public:
classA(classA & rhs)
{
cout<<"copy constr A"<<endl;
};
classA() = default;
};
class classB
{
private:
classA obA;
public:
classA& getRefA(){return obA;}
};
int main()
{
classB obB;
auto ob = obB.getRefA();
}
Run Code Online (Sandbox Code Playgroud)
结果是复制构造A
我知道 auto 不会检测函数的引用。自动检测是否只检测类型而不参考?
我有第三方C库.我想在c ++中使用它每个函数都返回错误代码.当我必须使用它时,我必须编写如下代码:
int err;
err=libFun1(....);
check(err);
err=libFun2(....);
check(err);
Run Code Online (Sandbox Code Playgroud)
我想包装这个函数,避免代码重复检查.每个librabry函数都有不同的数字参数.什么是一个好的设计呢?
c++ ×6
c++14 ×2
assembly ×1
auto ×1
boost ×1
boost-asio ×1
c ×1
c++11 ×1
disassembly ×1
inno-setup ×1
pascalscript ×1
pointers ×1
reference ×1
vector ×1
wrapper ×1
x86 ×1
x86-64 ×1