草庐IT

c++ - 如何创建一个不能被其他类继承的类?

这个问题在这里已经有了答案:PreventclassinheritanceinC++(9个回答)关闭6年前。任何人都可以告诉如何创建类,以便它不能被任何其他类继承。classA{public:inta;intb;};classB:classA{public:intc;};在上面的程序中我不想让B类继承其他类

c++ - 动态分配内存的类不使用 "*"的逻辑

所以我正在学习C++,我刚刚了解了为类动态分配的内存。有些东西让我觉得很奇怪。intmain(){person*pOne=newperson("mike",35);coutgetName()我认为当我们想在pOne中调用getName()函数时,我们应该像*pOne->getName()那样做,因为pOne保存的是内存位置,而不是person对象本身。但如果我这样做,我会遇到编译器错误。我使用未动态分配的pTwo来完成它,它像我想的那样工作。那么,有人可以解释一下在尝试调用函数时不使用“*”的逻辑吗? 最佳答案 内置运算符a->b定

c++ - 如何防止其他人在堆栈上创建您的类的新实例?

假设你写了一个A类,构造函数是私有(private)的(以防止其他人在堆栈上创建它),然后有一天另一个开发人员添加了一个新的构造函数,比如A(int),并想在main()中使用:一个(1)在堆栈上创建它。你如何防止这种情况发生?我的解决方案:声明一个公共(public)构造函数A(void&input){Cerr我不确定它是否正确?谢谢 最佳答案 正如其他人所说,您不能阻止可以编辑您的类(class)的人让它做几乎任何事情......但是.........如果您想要一个比注释更易于编译器执行的方法,您可以继承一个没有默认构造函数的类

c++ - 在没有模板参数的类模板中使用类名

代码来自一本C++书籍如下:为什么这个公共(public)成员Link*next没有类型名参数?templateclassLink{private:staticLink*freelist;public:Eelement;Link*next;//thislineconfusedme....Link(constE&elemval,Link*nextval=NULL){element=elemval;next=nextval;}Link(Link*nextval=NULL){next=nextval;}void*operatornew(sizet){if(freelist==NULL)ret

c++ - 如何在需要提及需要循环声明的其他类的类中初始化变量?

在下面的示例中,structY前向声明的前向声明是不够的。如果你注释掉X::b,它编译得很好,因为Y有一个完整的结构声明可以使用,但X只有前向声明。#include#includestructY;structX{std::functionb{[](auto&y_){returny_.a;}};boola{false};};structY{std::functionb{[](auto&x_){returnx_.a;}};boola{true};};intmain(){return0;}Ideone以下是我可以想出的修复方法:#include#includestructY;structX{

c++ - 在运行时在 C++ 中组合几个类的类

对于我正在开发的解析器,我正在解析事件日志。在日志中,每一行都是一个事件,这样可以很容易地逐行解析文件。记录的事件在开头有一个字符串标识符,其构造如下:X_Y_ZX始终是相同的,并且可以解析为具有8个成员的类,因为它有8个参数。Y可以是6种不同的类型,所有类型都有不同数量的参数,根据它们是什么类型的Y可以有不同的解释。为这6种类型中的每一种创建一个类是微不足道的;因为它们只是string、int和bool。Z可以是20多种不同的东西,所有东西都有不同数量的参数,可以有不同的解释。为这20多种类型创建一个类也很简单;因为它们只是string、int和bool。因此,事件类可以这样定义:t

c++ - 为命名空间中的类特化方法模板

我正在使用以下编译时“技巧”(基于ADL)来创建一个仅由同一命名空间中的类有效/定义/调用的函数。namespaceFamily1{structModelA{};structModelB{};templateboolis_in_Family1(Tconst&t){returntrue;}};namespaceFamily2{structModelC{};templateboolis_in_Family2(Tconst&t){returntrue;}};Family1::ModelAmA;Family2::ModelCmC;is_in_Family1(mA);//VALIDis_in_F

c++ - 如何获取和设置 CORBA 中的类字段? (处理 CORBA 对象序列)

我有这样的东西:用户.idl:#ifndef__USER_IDL__#define__USER_IDL__interfaceGroup;interfaceUser{typedefsequenceGroups;GroupsgetGroups();voidsetGroups(inGroupsg);};#endifUserImpl.h和UserImpl.cpp:classUserImpl:publicPOA_User{private:User::Groupsgroups;public:User::Groups*getGroups();voidsetGroups(const::User::Gr

c++ - 不从源函数返回的类中的 auto_ptr

考虑以下代码:#includestructA{std::auto_ptri;};AF(){Aa;returna;}intmain(intargc,char**argv){Aa=F();return0;}编译时我收到一个编译错误,(参见here):error:nomatchingfunctionforcallto‘A::A(A)’Aa=F();^据我了解,A::A(A)甚至不允许存在,那么编译器为什么要请求它呢?其次,为什么不使用RVO?如果是因为std::auto_ptr不能从函数中返回,为什么下面会编译运行?#includestd::auto_ptrF(){std::auto_ptr

c++ - 如果从 QObject 派生的类的构造函数抛出,是否会发出 destroyed()?

我到处都看到像下面这样的QtGUI语法:myDialog::myDialog(QWidget*parent,Qt::WFlagsflags):QDialog(parent,flags){QPushButton*button=newQPushButton("&Download",this);QVBoxLayout*layout=newQVBoxLayout(this);//somethingthatcanthrowherelayout->addWidget(button);setLayout(layout);}我一直想知道这是否会在发生异常时泄漏,因为我作为父项给按钮和布局的“this”