草庐IT

private_struct

全部标签

c++ - 为什么要在私有(private)继承下覆盖?

classBase{public:virtualvoidf(){}};classDerived:privateBase{public:voidf()override{}};我的问题是这样的覆盖有什么用吗?私有(private)继承意味着您不能将Derived存储在Base指针中,因此永远不需要将f动态分派(dispatch)到正确的类型。 最佳答案 仅举一个例子:Derived::f1()的一个函数可以调用Base::f2()的一个(公共(public)或protected)函数,这反过来可以调用f()。在这种情况下,需要动态调度。

c++ - C++ 私有(private)函数的内部链接?

当我用C编写面向对象的代码时,我通常将结构体定义与公共(public)函数放在一个头文件中,并在单独的.c文件中实现公共(public)函数。我将static关键字赋予该类的所有“私有(private)”函数,并在.c文件中实现它们。然后公共(public)函数可以调用属于同一类的私有(private)函数。由于static关键字,无法从外部调用私有(private)函数,因此GCC可以优化其中的许多函数。它们通常是内联的,原始函数从输出目标文件中完全删除。现在回答我的问题:如何对C++类执行相同的操作?假设我有一个头文件:classA{intprivate_field;intpriv

c++ - 通过宏定义一个 Enum/Struct 需要什么?

我指的是来自开源项目tig的代码示例。这是一个很棒的工具!文件:tig.c我正在努力寻找定义request枚举的原因,如下所示:enumrequest{#defineREQ_GROUP(help)#defineREQ_(req,help)REQ_##req/*Offsetallrequeststoavoidconflictswithncursesgetchvalues.*/REQ_UNKNOWN=KEY_MAX+1,REQ_OFFSET,REQ_INFO,/*Internalrequests.*/REQ_JUMP_COMMIT,#undefREQ_GROUP#undefREQ_};甚至

c++ - 具有私有(private)数据成员的内联类函数

现在我一直在学习内联函数,遇到了一些让我很困惑的事情看这门课classNebla{private:intx;public:inlinevoidset(inty){x=y;}inlinevoidprint(){cout它有一个私有(private)数据成员:intx;它有两个公共(public)内联函数:set(inty)和print()现在因为它们两个函数是内联的,所以当它们被调用时,编译器会用函数的内容替换函数调用。如果我这样做Neblan;n.set(1);n.print();因为这两个函数是内联的,所以应该等同于:Neblan;n.x=1;cout但是等一下,x是私有(priva

C++ 私有(private)和 protected 虚方法

为了分离两个客户端的接口(interface),将虚拟方法设为私有(private)似乎是件好事-1.实例化对象并调用方法的客户端2.派生自该类并可能想要覆盖该方法的客户。简单地说——第一个客户不需要知道一个方法是否是虚拟的。他将调用基类公共(public)非虚拟方法,该方法又将调用私有(private)虚拟方法。例如,请参见下面的代码。现在,如果虚方法需要向其基类的相应虚方法发送super消息,例如Save方法-它必须通过继承链中的所有虚方法才能保存对应的数据每个派生级别-我们别无选择,只能使用protected虚拟方法-除非有一种方法可以保证在所有派生级别保存数据而不使用super

c++ - 具有私有(private)继承的派生类中的友元函数

如果一个Derived类是从一个Base类私有(private)继承的,并且Derived类有一个友元函数f(),那么f()可以访问Derived类和Base类的哪些成员。classBase{public:inta;protected:intb;private:intc;};classDerived:privateBase{voidfriendf(){}public:intd;protected:inte;private:intf;};我理解如果一个类是从基类私有(private)继承的,那么在派生类中一切都是私有(private)的。但为什么在上面的代码中,函数f()可以访问a、b、

c++ - 如何让派生类访问私有(private)成员数据?

我遇到了一个C++问题。我有一个基类,它在类的私有(private)可见区域内有一个自引用对象指针。我在基类中有一个构造函数来初始化这两个指针。现在我的派生类的访问说明符是私有(private)的(我想将基类的公共(public)成员函数设为私有(private))。现在通过我的派生类的成员函数,我想创建一个对象指针,它可以指向基类的私有(private)数据,即那些自引用对象指针。我的代码是:classbase{private:base*ptr1;intdata;public:base(){}base(intd){data=d}};classderived:privatebase{p

c++ - 为struct动态分配内存

我正在上C++类(class),并且有一项作业要求我为结构动态分配内存。我不记得在类里面讨论过这个,我们只是在继续上课之前简单地接触过new运算符。现在我必须“动态分配一个学生,然后提示用户输入学生的名字、姓氏和A-number(身份证号)。”我的结构是这样写的structStudent{stringfirstName,lastName,aNumber;doubleGPA;};我试过Studentstudent1=newStudent;但这不起作用,我不确定如何使用结构动态执行此操作。 最佳答案 将您的定义更改为structStud

c++ - 是否为 initializer_list 提供一个私有(private)构造函数?

此标准草案显示了initializer_list的概要.它没有私有(private)构造函数。但是我看过的两个标准库实现,libstdc++和libc++,都提供私有(private)构造函数://Thecompilercancallaprivateconstructor.constexprinitializer_list(const_iterator__a,size_type__l):_M_array(__a),_M_len(__l){}_LIBCPP_ALWAYS_INLINE_LIBCPP_CONSTEXPR_AFTER_CXX11initializer_list(const_E

c++ - 错误 : base class 'A1' has private copy constructor

在windows平台上使用Clang3.7见以下代码:classA1{public:A1(char*name){}virtual~A1(){}private:A1(constA1&){}};classB1:publicA1{public:B1():A1(""){}};我收到以下错误:MyFile(31):8:error:baseclass'A1'hasprivatecopyconstructorB1():A1(""){}^MyFile(25):2:note:declaredprivatehereA1(constA1&){}^公开A1复制构造函数,消除错误!这里发生了什么?注意:通过改变