草庐IT

NAME_CONST

全部标签

c++ - 使用(float&)int可以进行类型修剪,(float const&)int可以像(float)int那样转换吗?

VS2019版本x86。templatefloatget()const{intf=_mm_extract_ps(fmm,i);return(floatconst&)f;}当使用return(float&)f;编译器使用时extractpsm32,...movssxmm0,m32。正确的结果当使用return(floatconst&)f;编译器使用时extractpseax,...movdxmm0,eax。错误的结果T&和Tconst&首先是T,然后是const的主要思想。const只是程序员的某种协议(protocol)。您知道您可以解决它。但是汇编代码中没有任何const,只能输入f

c++ - 当字符串超出范围时,将 string::c_str() 分配给 const char*

我对基本的C++用法有疑问。下面的代码使用gcc/LInux编译,打印正确。字符串test超出范围,所以它的c_str()值也应该无效,不是吗?我错了还是我误解了constchar*的意思?#includeintmain(){constchar*a="aaaa";std::cout 最佳答案 你是对的,你的代码无效,因为它使用了一个生命周期已经结束的对象。它是“偶然”起作用的,你不能依赖它。 关于c++-当字符串超出范围时,将string::c_str()分配给constchar*,我们

c++ - 从 const 方法调用成员的非常量方法

我很惊讶地发现“常量”中的这个“洞”:#includeclassA{intr;public:A():r(0){}voidnonconst(){puts("Iaminurnonconstmethod");r++;}};classB{Aa;A*aPtr;public:B(){aPtr=newA();}voidgo()const{//a.nonconst();//illegalaPtr->nonconst();//legal}};intmain(){Bb;b.go();}所以基本上从const方法B::go(),你可以调用non-const成员函数(恰如其分地命名为nonconst())如果

java - 采访 : Is it possible to create a class without name?

面试的时候,面试官问了我我们可以创建没有名字的类吗?因为我不确定是否真的可以创建一个没有名字的类。所以,我说不。后来,我尝试了谷歌搜索,发现其他人也在寻找相同问题的答案,但我没有找到明确的答案。如果有人能清楚地解释这门课,我将不胜感激。我的意思是,该类在技术上称为什么以及我们如何实例化该类? 最佳答案 是的,它叫做匿名类/结构。在C++中:class{}x;x是该类型的一个对象,您不能再创建了,因为,如果类没有名称而且所有....howwouldonecallconstructoranddestructors你不知道。在Java和C

c++ - 这个 C++ const 引用访问器接口(interface)习惯用法有什么问题吗?

我正在将一个结构体转换为一个类,这样我就可以为我的变量强制执行一个setter接口(interface)。不过,我不想更改所有读取变量的实例。所以我转换了这个:structfoo_t{intx;floaty;};为此:classfoo_t{int_x;float_y;public:foot_t():x(_x),y(_y){set(0,0.0);}constint&x;constfloat&y;set(intx,floaty){_x=x;_y=y;}};我对此很感兴趣,因为它似乎模拟了C#的公共(public)只读属性的想法。编译正常,我还没有发现任何问题。除了在构造函数中关联const

c++ - 无法在 C++ 中调用 const 引用参数的方法

classA{public:A(){};~A(){};voidmethod(){};};voidcall(constA&a){a.method();//IcannotcallthismethodhereifIuse"const"butIcancallitifnotusing"const"}intmain(){Aa;call(a);return0;}在这种情况下,错误是:“将constA作为voidA::method()的参数传递会丢弃限定符[-fpermissive]|”在函数call中,如果我使用const,我会得到错误,但如果我去掉它,它就会工作。谁能帮我解释一下?

conda create -n name python=3.7无法创建问题合集

错误1:CondaHTTPError:HTTP000CONNECTIONFAILEDforurlElapsed:-AnHTTPerroroccurredwhentryingtoretrievethisURL.HTTPerrorsareoftenintermittent,andasimpleretrywillgetyouonyourway.'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64'解决方法一,直接解决:1、修改镜像源参照:https://blog.csdn.net/Michael_Cretu_/articl

c++ - 数组初始化在 C++ 中使用 const 变量

这可以工作:constintsize=2;intarray[size]={0};编译错误:inta=2;constintsize=a;intarray[size]={0};为什么? 最佳答案 因为C++委员会的人是这么决定的。技术原因是用于初始化size的第一个表达式是常量表达式,可以在编译期间计算。这意味着编译器还可以知道数组的大小,并且可以在编译时完成分配(在这种情况下,“保留”可能是一个更合适的术语)。在第二种情况下,表达式不是常量表达式(给定C++定义)并且这种还原是不可能的。在第二种情况下,值确实在size初始化时固定,这

c++ - 前向声明中的 "using typedef-name ... as class"

我在这里做一些基于策略的设计,我需要typedef很多模板类型来缩短名称。现在问题来了,当我需要使用指向其中一种类型的指针时,我尝试只是转发声明它,但编译器提示test.cpp:8:error:usingtypedef-name'Test1'after'类(class)'它与大小无关,因为我根本不需要obj,它只是“.h”文件中的一个指针,我不想将整个模板放入其中。这是g++://WorksclassTest{};classTest;//Doesn'tworkclassTest{};typedefTestTest1;classTest1;有什么提示吗? 最佳

c++ - const 变量的静态断言?

静态断言对于在编译时进行检查非常方便。一个简单的静态断言习惯用法如下所示:templatestructStaticAssert;templatestructStaticAssert{};#defineSTATIC_ASSERT(condition)do{StaticAssert();}while(0)这对像这样的东西很有用STATIC_ASSERT(sizeof(float)==4)和:#defineTHIS_LIMIT(1000)...STATIC_ASSERT(THIS_LIMIT>OTHER_LIMIT);但是使用#define并不是定义常量的“C++”方式。C++会让你使用匿名