草庐IT

hardcoded_Value

全部标签

c++ - 汇编如何做参数传递: by value,引用,不同类型/数组的指针?

为了了解这一点,我编写了这个简单的代码,其中我只是创建了不同类型的变量,并通过值、引用和指针将它们传递给函数:inti=1;charc='a';int*p=&i;floatf=1.1;TestClasstc;//has2privatedatamembers:inti=1andintj=2函数体留空,因为我只是在查看参数是如何传入的。passByValue(i,c,p,f,tc);passByReference(i,c,p,f,tc);passByPointer(&i,&c,&p,&f,&tc);想看看这对数组有何不同,以及如何访问参数。intnumbers[]={1,2,3};pass

c++ - 有没有一种正统的方法来避免编译器警告 C4309 - "truncation of constant value"与二进制文件输出?

我的程序执行将二进制数据写入文件的常见任务,符合某种非文本文件格式。由于我正在写入的数据尚未存在于现有block中,而是在运行时逐字节放在一起,因此我使用std::ostream::put()而不是write().我认为这是正常程序。该程序运行良好。它同时使用std::stringstream::put()和std::ofstream::put()以两位十六进制整数作为参数。但是我得到编译器警告C4309:"truncationofconstantvalue"(inVC++2010)每当参数到put()大于0x7f。显然编译器期待signedchar,常数超出范围。但我认为实际上并没有

c++ - 有没有一种正统的方法来避免编译器警告 C4309 - "truncation of constant value"与二进制文件输出?

我的程序执行将二进制数据写入文件的常见任务,符合某种非文本文件格式。由于我正在写入的数据尚未存在于现有block中,而是在运行时逐字节放在一起,因此我使用std::ostream::put()而不是write().我认为这是正常程序。该程序运行良好。它同时使用std::stringstream::put()和std::ofstream::put()以两位十六进制整数作为参数。但是我得到编译器警告C4309:"truncationofconstantvalue"(inVC++2010)每当参数到put()大于0x7f。显然编译器期待signedchar,常数超出范围。但我认为实际上并没有

c++ - C++ 中的 "new (&variable) value;"有什么作用?

假设我在C++程序中有以下代码:Objecta=Object(someParameters);new(&a)Object(someOtherParameters);我的假设是它将a的内容替换为Object(someOtherParameters),避免为声明可能的operator=对象。这是正确的吗? 最佳答案 它叫做placementnew.它在指定内存上调用构造函数,而不是分配新内存。请注意,在这种情况下,您必须在释放分配的内存之前显式调用对象的析构函数。澄清。假设你分配了一些原始内存char*rawMemory=newchar

c++ - C++ 中的 "new (&variable) value;"有什么作用?

假设我在C++程序中有以下代码:Objecta=Object(someParameters);new(&a)Object(someOtherParameters);我的假设是它将a的内容替换为Object(someOtherParameters),避免为声明可能的operator=对象。这是正确的吗? 最佳答案 它叫做placementnew.它在指定内存上调用构造函数,而不是分配新内存。请注意,在这种情况下,您必须在释放分配的内存之前显式调用对象的析构函数。澄清。假设你分配了一些原始内存char*rawMemory=newchar

c++ - 'value initializing' 是什么意思?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:WhatdothefollowingphrasesmeaninC++:zero-,default-andvalue-initialization?如果我有一个类,例如:classInfo{intx;inty;};我曾经创建过一个对象,Info*p=newInfo();Info旁边的括号是否意味着我正在初始化它?它与Info*p=newInfo;有何不同?我知道有一个question它区分新旧C++语言中的不同含义,但我想知道默认值初始化和值初始化之间的语义差异,例如值初始化是否意味着将某些东西初始化为零?

c++ - 'value initializing' 是什么意思?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:WhatdothefollowingphrasesmeaninC++:zero-,default-andvalue-initialization?如果我有一个类,例如:classInfo{intx;inty;};我曾经创建过一个对象,Info*p=newInfo();Info旁边的括号是否意味着我正在初始化它?它与Info*p=newInfo;有何不同?我知道有一个question它区分新旧C++语言中的不同含义,但我想知道默认值初始化和值初始化之间的语义差异,例如值初始化是否意味着将某些东西初始化为零?

c++ - std::promise set_value 和线程安全

我对std::promise::set_value()上的线程安全要求有点困惑。standardsays:Effects:Atomicallystoresthevaluerinthesharedstateandmakesthatstateready但是,它也说promise::set_value()只能用于设置一次值。如果多次调用,则会抛出std::future_error。所以你只能设置一次Promise的值。事实上,std::promise的几乎每个教程、在线代码示例或实际用例都涉及2个线程之间的通信channel,其中一个线程调用std::future::get(),其他线程调用

c++ - std::promise set_value 和线程安全

我对std::promise::set_value()上的线程安全要求有点困惑。standardsays:Effects:Atomicallystoresthevaluerinthesharedstateandmakesthatstateready但是,它也说promise::set_value()只能用于设置一次值。如果多次调用,则会抛出std::future_error。所以你只能设置一次Promise的值。事实上,std::promise的几乎每个教程、在线代码示例或实际用例都涉及2个线程之间的通信channel,其中一个线程调用std::future::get(),其他线程调用

c++警告: enumeration value not handled in switch [-Wswitch]

我正在尝试编译以下代码而没有警告:while(window.pollEvent(event)){switch(event.type){casesf::Event::Closed:window.close();break;casesf::Event::KeyPressed:if(event.key.code==sf::Keyboard::Escape)window.close();if(sf::Keyboard::isKeyPressed(sf::Keyboard::Space))particleSystem.fuel(200/**window.getFrameTime()*/);if(