草庐IT

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

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

c++ - 如何将用 swig 包装的 c++ 类的实例推送到 lua 堆栈上?

我有一个用swig包装并用lua注册的类。我可以在lua脚本中创建此类的实例,一切正常。但是假设我在我的C++代码中创建了一个类的实例,并调用了新的X,并且我有lalua_stateL,其中有一个我想调用的函数,它接受一个参数,一个X的实例...我该如何调用该函数。这是(一些)有问题的代码(我省略了错误处理的东西):主要.cppclassGuiInst;extern"C"{intluaopen_engine(lua_State*L);}intmain(){GuiInstgui=newGuiInst;lua_State*L=luaL_newstate();luaopen_engine(L

c++ - 多读/单写类的线程安全

我正在研究一个经常阅读但很少写的集合。classA{boost::shared_ptr>_mySet;public:voidadd(intv){boost::shared_ptr>tmpSet(newstd::set(*_mySet));tmpSet->insert(v);//inserttotmpSet_mySet=tmpSet;//swap_mySet}voidcheck(intv){boost::shared_ptr>theSet=_mySet;if(theSet->find(v)!=theSet->end()){//dosomethingirrelevant}}};在类中,ad

c++ - 使用 Doxygen 单独提取类的公共(public)方法列表

我正在为我的C++项目使用Doxygen,该项目将托管在github中。我想在自述文件中包含一个类的方法列表,并且我正在考虑使其自动化的方法。我将在repo中包含整个生成的html页面,但我认为通过在自述文件中包含主类的成员来提供API的概念会很好。到目前为止,我找不到生成Markdown文件的方法。我的下一个想法是编写一些shell脚本,它会自动复制成员列表并将其包含在自述文件中,为此我需要单独生成一个类的成员函数列表。是否可以配置doxygen来单独输出一个类的成员列表? 最佳答案 我最近有一个项目,我想将几​​个函数确定为公共

c++ - 模板类的静态成员数组的延迟初始化

我正在编写代码来执行Gaussianintegration与n点,其中n是一个编译时间常数。对于给定的n,我知道如何计算横坐标和权重。计算必须从头开始为每个不同的n进行。.现在,我按照这些思路做一些事情://Severalstructslikethisone(laguerre,chebyshev,etc).templatestructlegendre{staticconstsize_tsize=n;staticconstdoublex[n];staticconstdoublew[n];};templatedoublegauss_quadrature(F&&f){doubleacc=0;

c++ - 什么是跨平台字符串类的 "Best Practices"以实现良好的模型可移植性?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter为指导。8年前关闭。关于跨平台Unicode字符串使用的主题有无数的讨论线程,但似乎存在广泛的意见,但没有解决在我正在从事的特定项目中一直困扰我的一些具体问题:我有一个大型跨平台C++代码库,可以追溯到近20年前。它包含各种字符串实现的大杂烩,包括:char*帕斯卡式字符串std::string几个具有重叠功能的自定义跨平台类CFString各种常量字符串该代码库正在被重写以完

c++ - 内联导致覆盖虚函数的模板类的专门成员函数被忽略

我想和你们分享一个我偶然发现的奇怪的例子,这让我思考了两天。要让这个例子正常工作,您需要:三角形虚继承(成员函数getAsString())模板类的成员函数特化(此处为Value::getAsString())覆盖虚函数(自动)由编译器内联你从一个模板类开始,它实际上继承了一个公共(public)接口(interface)——即一组虚函数。稍后,我们将特化其中一个虚函数。内联可能会导致我们的特化被忽视。//test1.cppandtest2.cpp#includeclassValueInterface_common{public:virtual~ValueInterface_commo

c++ - 具有用户定义类成员的类的复制构造函数

我正在阅读thinkinginc++第14章:“不会自动继承的函数”classGameBoard{public:GameBoard(){cout在上面的代码中,我被Game类的拷贝构造函数和赋值构造函数搞糊涂了://YoumustexplicitlycalltheGameBoard//copy-constructororthedefaultconstructor//isautomaticallycalledinstead:Game(constGame&g):gb(g.gb){//Game(constGame&g){cout作者给出了评论:“您必须显式调用GameBoard复制构造函数,

c++ - 创建一个指向纯虚类的新指针

我有以下设计类:classMeal{public:virtualvoidcook()=0;//purevirtual}classOmelette:Meal{public:voidcook(){/*dosomething*/};//non-virtual}classWaffle:Meal{public:voidcook(){/*dosomething*/};//non-virtual}std::vector>menu;voidaddMeal(constMeal&meal){menu.emplace_back(newMeal(meal));//cannotallocateanobjecto

c++ - 在 C++ 中放置接口(interface)类的位置

我是C++编程的新手,很难组织我的项目。我有一个名为StateManager的类,它有一个头文件和一个cpp文件。cpp包含所有实现。如果我现在想创建一个接口(interface)类:classIStateManager{public:virtual~IStateManager(){}virtualvoidSomeMethod{}};我知道接口(interface)并不像在C#或Java中那样真正存在,但我希望多个类继承自这个“接口(interface)”。这个类还需要头文件和cpp文件吗?或者我可以将它放在头文件中吗? 最佳答案