草庐IT

static成员

全部标签

【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++ - 专门针对模板类的 C++ 类成员函数

这是我的问题:我有一个cc类,我想专门针对另一个模板类(带有模板参数)的类成员方法。一个例子:#include#include#includetemplateclasscc{public:voidfoo();Tv;};template//OK,genericdefinitionoffoo()voidcc::foo(){std::coutwithatemplateargument.templatevoidcc>::foo(){std::cout//OK!specializationrespecttoacomplexvoidcc>::foo(){std::cout//OK!voidcc::

c++ - 成为私有(private)成员(C++ 类)意味着什么?

我对C++类中的私有(private)数据成员有点困惑。我是编码新手,仍处于“类(class)”一章的中间,所以我可能会超前,但我觉得我缺少一条信息:假设我有这段代码:classclocktype;{public:voidsetTime(int,int,int);...private:inthr;intmin;intsec;};然后我创建了一个对象myclock。clocktypemyclock;myclock::setTime(hour,minute,min){if(0我的教科书说我不能这样做:myclock.hr=5;因为hr是私有(private)数据成员,对象myclock只能

c++ - 如何使用前向声明类的成员函数?

我有2个类A和B以及以下4个文件:啊啊#ifndefA_H#defineA_H#include"B.h"classA{public:A();intfunctionA();BobjectB;};#endif//A_HB.h#ifndefB_H#defineB_HclassA;classB{public:B();intfunctionB();A*objectA;};#endif//B_HA.cpp#include"A.h"A::A(){}intA::functionA(){return11;}B.cpp#include"B.h"B::B(){}intB::functionB(){retur

c++ - 为具有特定成员变量值的类创建不同类型

给定一个类,该类具有一些定义类类型的枚举,如下例所示:classFruit{public:enumclassFruitType{AppleType=0,OrangeType=1,BananaType=2,};Fruit(FruitTypetype):type_(type){}FruitTypefruit_type()const{returntype_;}private:FruitTypetype_;};以及从它派生的共享相同枚举的类:classDriedFruit:publicFruit{public://SomeDriedspecificmethods.};是否有可能以某种方式为Fr

c++ - 如何在不使用 std 库的情况下将数组值分配给构造函数中的类成员数组?

试图了解将值复制到类成员数组中的正确方法。目前,我获取数组的每个值并将它们复制到成员数组的相应元素中:structIPAddress{IPAddress(constunsignedcharvalues[4]):values{values[0],values[1],values[2],values[3]}{}constunsignedcharvalues[4];};intmain(intargc,char**argv){unsignedcharvalues[]={10,0,0,1};IPAddressaddress(values);return0;}这行得通,但是有没有办法“自动”复制构

c++ - 访问结构的 union 成员的优雅方式

有没有办法反转#define指令?在下面的例子中#defineZERO0#defineONE1#defineTWO2#defineTHREE3是否可以从整数值2中检索出TWO?此示例来自C代码,但如果需要,我可以使用一些C++代码。我的目标是能够分解一些这种形式的虚假switch-case循环:switch(num){caseZERO:returnstd::to_string(foo.V_ZERO);caseONE:returnstd::to_string(foo.V_ONE);caseTWO:returnstd::to_string(foo.V_TWO);caseTHREE:retu

c++ - 为什么相应成员不能正确访问成员函数指针?

考虑这个代码片段。classB{public:voidup(){std::coutm_execute=otherFunc;}voidfind(){(this->*m_execute)();(m_b->*m_execute)();}private:void(B::*m_execute)();B*m_b;};intmain(){B*b=newB();b->init(&B::up,&B::down);b->find();}我有一个B类。它的私有(private)成员是一个指向B的指针,即m_b和一个函数指针。在init()函数中,给出私有(private)成员函数指针up(),私有(priv

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++ - 对专用模板成员的 undefined reference

我有一个由带有静态成员函数的模板模板类参数化的类:templateclassF>structA{staticintfoo();};此类没有默认定义foo,并且必须专用于不同的类型。我还有另一个类,由带有嵌套模板类的模板模板类参数化:templateclassF>structB{templatestructC{};};我要C专业A对于任何模板模板类F专门A已经:templateclassF>structA::templateC>{staticintfoo();};templateclassF>intA::templateC>::foo(){returnA::foo()/2;}所以,如果我