草庐IT

static-members

全部标签

c++ - 如何使用 BOOST_STATIC_ASSERT

#include#includeusingnamespacestd;//Iunderstandhowthefollowingtemplatefunctionworks//template//TGetMax(Ta,Tb){//Tresult;//result=(a>b)?a:b;//return(result);//}//Ihavedifficultiestounderstandhowthefollowingcodeworks//whenweshouldusethissyntaxtemplatevoidaccepts_values_between_1_and_10(){BOOST_STA

c++ - 您可以向 union 成员发送 "pointer to member"吗?

我能找到的所有描述都在类的上下文中谈论“指向成员的指针”。union与结构非常相似,尤其是也有成员。您能否也提供指向这些成员的指针?例如unionx{inta;floatb;};intx::*p=&x::a;我不是在谈论作为一个整体的union体的指针,作为union体成员的指针等。上面示例中的p实际上是一个偏移量,显然大小为0。我需要这个构造来回答thisquestion. 最佳答案 §3.9.2/1:复合类型可以通过以下方式构造:......指向非静态50类成员的指针,它们标识给定类的对象中给定类型的成员,§8.3.3/1:在声

C++:在初始化程序中类静态变量的定义中查找名称

我有简单的代码:#includeclassA{public:staticinta;};voida(){}intA::a=[](){static_assert(std::is_function::value,"'a'isnotafunction");return777;}();intmain(){return0;}在编译期间(使用g++4.8.1和clang3.4)关于'a'的getstatic断言错误不是函数。但是在assert内部,在decltype中我输入了'a'(它是一个函数)而不是A::a。编译器不应该采用函数(a)而不是类成员(A::a)吗?您能否在解释C++规范的地方给出任

c++ - 单例实例作为静态字段与 getInstance() 方法中的静态变量

在thisthread,以下是关于单例实例的说明:ThestaticvariablecanbestatictotheGetInstance()function,oritcanbestaticintheSingletonclass.There'sinterestingtradeoffsthere.这些权衡是什么?我知道,如果声明为static函数变量,则在首次调用该函数之前不会构造单例。我也读过一些关于线程安全的内容,但我不知道这到底意味着什么,或者这两种方法在这方面有何不同。两者之间还有其他主要区别吗?哪种方法更好?在我的具体示例中,我将工厂类设置为单例,并将实例存储为类中的stati

c++ - C 样式转换和 C++ static_cast 到指针的引用

这不是C++11我对微软的第三个参数感兴趣CMapStringToOb::GetNextAssoc,其定义如下:voidGetNextAssoc(POSITION&rNextPosition,CString&rKey,CObject*&rValue)const;然后我得到了以下用于测试的简单代码:两个好的案例和一个编译器错误的案例。classCMyObject:publicCObject//inordertouseCMapStringToOb{public:CMyObject(CStringname_):name(name_){}voidSayHello(){TRACE(_T("hel

【C++】const、static关键字和构造函数初始化

💗个人主页💗⭐个人专栏——C++学习⭐💫点击关注🤩一起学习C语言💯💫目录1.const修饰成员函数1.1语法格式1.2权限放大缩小1.3思考1.4解答2.再谈构造函数2.1构造函数体赋值2.2初始化列表2.3explicit关键字3.static成员3.1静态变量3.2静态函数3.3 静态成员变量1.const修饰成员函数将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。1.1语法格式在成员函数的声明中使用const关键字的语法格式为:返回类型函数名()const;在成员函数的定

c++ - static_cast 带走了常量

据我所知(以及本主题:Whenshouldstatic_cast,dynamic_cast,const_castandreinterpret_castbeused?)const_cast是唯一应该能够消除变量常量性的强制转换。然而,当弄乱clang-6.0和g++5.4.0时,我偶然发现了一种与上述相矛盾的行为。看起来static_cast做的工作完全一样。这些主要函数在两个编译器中给出了完全相同的结果:测试类定义structBase{Base(){std::cout使用const_castintmain(void){std::cout(b).no_const();std::cout使

【C++入门到精通】C++类型的转换 | static_cast | reinterpret_cast | const_cast | dynamic_cast [ C++入门 ]

阅读导航引言一、强制转换(集成C语言的语法)二、static_cast操作符1.操作符介绍2.使用示例(1)基本类型之间的转换(2)类型之间的隐式转换(3)类指针和引用之间的转换三、reinterpret_cast操作符1.操作符介绍2.使用示例(1)将指针转换为整数(2)将整数转换为指针(3)将指向基类的指针转换为指向派生类的指针(4)将指向不同类型的指针进行转换四、const_cast操作符1.操作符介绍2.使用示例(1)移除常量性以修改对象的值(2)在函数中移除常量性以调用非常量版本的成员函数(3)移除常量性以进行底层操作五、dynamic_cast操作符1.操作符介绍2.使用示例(1)

c++ - 如何预期 static_assert 失败并使用 Boost.Test 框架处理它?

如果我有一个接受模板参数的方法,该模板参数应该可转换为base_of或与返回类型相同的类型,我应该怎么做?例如,考虑这个方法:templateclassIFoo{public:templateT*as(){static_assert(std::is_same::value||std::is_convertible::value||std::is_base_of::value,"IFoo::as()requiresServiceTtobeabaseofT");...}};现在,我想对其进行BOOST_CHECK!classA{};classB{};BOOST_AUTO_TEST_CASE

c++ - 拥有大型二维数组 : static int vs int

在解决DP相关问题时,我观察到第一个有效但第二个段错误。实际原因是什么?仅使用int的内存限制是多少?intmain(){staticinta[3160][3160];return0;}intmain(){inta[3160][3160];return0;} 最佳答案 因为您可能没有足够的堆栈内存来存储这个大数组。第二个示例在堆栈上创建一个数组,而第一个示例创建的数组不在堆栈上而是在数据/Bss段中的某个位置,因为您使用static限定符明确指定了存储条件.注意c++标准没有规定stack或者heap或者datasegment或者B