草庐IT

成员方

全部标签

c++ - 非静态数据成员和一个定义规则

前提根据一个定义规则,如C++14Standard中所述,我只要遵循3.2.6中的规则,就可以在每个翻译单元中定义同一个类。这意味着允许以下程序是合法的://a_1.cppclassA{//definitionofAinta;//definitionofA::astaticintb;//declarationofA::bintfoo();//declarationofA::foo();intboo(){return42;};//definitionofA::boo()implicityinlined};//a_2.cppclassA{//definitionofAinta;//defi

c++ - 直接使用初始化列表初始化只有一个数组作为成员的结构是否合法?

#includeclassvec{public:intarr[2];};intmain(){veca={{1,2}};//worksvecb={1,2};//workstoo,butwhy?std::cin.get();}vec除了默认构造函数外没有其他构造函数。但是这段代码编译通过了,我想知道为什么。http://ideone.com/uyx98o 最佳答案 Aggregateinitialization太棒了,你甚至不需要获得正确的嵌套就可以让它工作,而且你还可以提供比成员更少的值:#include#includestructA

c++ - 为什么默认拷贝构造函数可以接收未定义的静态成员变量?

这是我的代码:#includeclassFoo{public:Foo(){std::cout结果是:Miao如果我尝试重载Foo的复制构造函数(取消注释Comment1),则会发生编译错误:/tmp/ccuF5B5q.o:Infunction`__static_initialization_and_destruction_0(int,int)':default.cpp:(.text+0x51):undefinedreferenceto`Bar::f'collect2:error:ldreturned1exitstatus我的操作系统是ubuntu-14.04.5,g++版本是4.8.4

c++ - 将任意类的成员函数指针存储为类实例变量

SO上有几个问题解决了将函数指针作为参数/实参传递的问题(here、here、here等)。其实我问了一个relatedquestion另一天。但是,这个问题有点不同。我的问题是我正在编写一个非常灵活的类。我现在拥有的适用于非成员函数。下面贴出来templateclassMyClass{private:typedefdouble(*firstFunctionPtr)(constT&var);typedefbool(*secondFunctionPtr)(constT&var);//FunctionpointersasmembervariablesfirstFunctionPtr_fir

c++ - 即使成员没有移动构造函数,移动构造函数也会自动生成?

引自C++Primerifweexplicitlyaskthecompilertogenerateamoveoperationbyusing=default,andthecompilerisunabletomoveallthemembers,thenthemoveoperationwillbedefinedasdeletedthemoveconstructorisdefinedasdeletediftheclasshasamemberthatdefinesitsowncopyconstructorbutdoesnotalsodefineamoveconstructor,orifthec

C++类静态结构成员定义

我还没有找到在构造函数中成功初始化类成员的方法,我也不知道为什么。我有一个头文件:#pragmaoncestructSTATE_MOUSE{boolmoving;intleft_button;intright_button;intmiddle_button;boolscroll_up;boolscroll_down;};classMessage{private:staticSTATE_MOUSEstate_mouse;public:Message();~Message();};然后我有一个源文件:#include"message.hpp"STATE_MOUSEMessage::stat

c++ - 存储成员函数模板实例时出错

我正在尝试存储指向成员函数模板实例的指针Derived::initialize如下(另请参见rextester.com。为了后代,我创建了一个simplerversion问题。):classBase{public:typedefvoid(Base::*setterFunction)(unsigned);templatestructSetterInterface{staticBase::setterFunctionFunction;};protected:templatevoidsetterImpl(unsigned){}};templateBase::setterFunctionBas

C++ || 类的八种函数 | 默认成员函数 | 构造函数 | 析构函数 | 拷贝构造函数 | 赋值运算符重载 | const成员函数 | 取地址及const取地址操作符重载

默认成员函数默认成员函数定义当一个类中什么成员都没有时,简称为空类。空类中真的什么都没有吗?并不是,在任何类只什么都没有的话,编译器就会自动生成以下6种默认成员函数。默认成员函数:用户没有显式实现,编译器自动生成的成员函数称为默认成员函数。C++中,6个默认成员函数。类中的成员函数,不仅仅局限于以下六种,仅仅只是以下六种,在用户没有显式实现的情况,编译器可以自动生成的成员函数。默认成员函数分类构造函数构造函数定义构造函数是特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证类中的每个成员都有一个合适的初始值,并且在对象整个生命周期内只调用一次。简单来说,就是类似于初始化In

c++ - 迭代类成员

您好,我想知道我是否可以迭代类成员,这样我就不必为每个类成员都设置writeElement。我希望将它放在一个for循环中,以便它循环所有公共(public)成员。我的代码:classStudent{public:stringname;stringlastName;intage;stringgender;vectorgrades;public:voidread(istream&in){readElement(in,name);readElement(in,lastName);readElement(in,age);readElement(in,gender);readElement(i

c++ - 从模板检查成员函数重载是否存在

是否可以从模板成员函数中检查一个类是否有某个成员函数重载?我能找到的最好的类似问题是这个:Isitpossibletowriteatemplatetocheckforafunction'sexistence?据我了解,这不适用于检查函数重载的情况。这是一个如何应用它的简化示例:structA;structB;classC{public:templatevoiddoSomething(std::stringasdf){Tdata_structure;/**somecode*/if(OVERLOAD_EXISTS(manipulateStruct,T)){manipulateStruct(