草庐IT

c++ - 包含在 header 或 cpp 中——Qt 中首选的是什么

当我写一个C++类时,我只在头文件中包含了特定情况。我更喜欢前向声明,我相信这是C++中的最佳实践。但是Qt类通常有很多属于标准Qt类的字段,因此将它们全部写在前向声明中似乎不是一个好主意。有什么首选方法吗?Qt有大量的文档,所以我认为它已经回答了我的问题,但我才刚刚开始阅读它。 最佳答案 我的规则是头文件只包含那些定义相关头文件使用的功能的文件。假设您在header中有指向某个类Foo的指针和引用,但header从未插入或实例化这些对象。在这种情况下,您不需要类的定义。您只需要一个前向声明。另一方面,如果您插入类型为Foo的对象,

c++ - 创建共享指针的首选方式

documentation指出std::make_shared通常为T分配内存和智能指针的控制block立即对比std::shared_pointer(newT),执行两次分配。这是否意味着它更有效率,因此应该始终使用std::make_shared如果可能的话?关于Qt等效项的相同问题-QSharedPointer.根据docsQSharedPointer内部结构和对象分配在一个内存分配中,这有助于减少长时间运行的应用程序中的内存碎片。是不是表示QSharedPointer::create()是首选吗?classMyClass{};QSharedPointerptr1=QShared

c++ - C++ 中将内置类型 (int) 转换为 bool 的首选方法是什么?

用VisualC++编程时,我想每个开发者都习惯于看到警告warningC4800:'BOOL':forcingvaluetobool'true'or'false'不时。原因显然是BOOL被定义为int并且直接将任何内置数值类型分配给bool被认为是一个坏主意。所以我现在的问题是,给定任何要解释为boolean值的内置数字类型(int、short、...),将这个值实际存储到变量中的/您的首选方式是什么类型bool?注意:虽然混合使用BOOL和bool可能不是一个好主意,但我认为无论是在Windows还是其他地方,这个问题都不可避免地会出现,所以我认为这个问题既不是Visual-C++

c++ - 给定一个指向 C++ 对象的指针,调用静态成员函数的首选方法是什么?

假设我有:classA{public:staticvoidDoStuff();//...moremethodshere...};稍后我有一个函数想要调用DoStuff:B::SomeFunction(A*a_ptr){更好的说法是:a_ptr->DoStuff();}或者即使我有一个实例指针,下面的更好:A::DoStuff()}这纯粹是风格问题,但我想在做出决定之前获得一些知情的意见。 最佳答案 我想我更喜欢“A::DoStuff()”,因为调用静态方法更清楚。 关于c++-给定一个指

无法使用共享首选项从JSON获取用户ID

JSON数据{VerifiedMember:[{user_id:"23",first_name:"karan",phone:""}],success:1,message:"success"}登录活动类publicclassNewLoginextendsAppCompatActivity{privatestaticfinalStringPREFER_NAME="Reg";ButtonbtnLogin;privateEditTexteditTextUserName;privateEditTexteditTextPassword;privateProgressDialogpDialog;JSONPa

c++ - 首选哪个,return const double& OR return double

给定以下场景,以下哪一项是首选。m_state是一个成员评价者,而不是局部变量。classC{private:doublem_state;public:doublestate()const{returnm_state;}//returnsdoubledouble&state(){returnm_state;}}===========================================classC{private:doublem_state;public:constdouble&state()const{returnm_state;}//returnsconstdouble&

c++ - 阅读 Effective、More Effective 和 Effective Modern C++(和 STL)的首选顺序是什么?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion我知道MoreEffectiveC++是EffectiveC++的扩展,而EffectiveModernC++侧重于C++11和14。作为这门语言的新手并且刚开始阅读这些书籍,我应该在之后阅读EffectiveModern前两个?另外,EffectiveSTL应该放在哪里?阅读上述书籍的首选顺序是什么,因为每本书都建立在前几本书的内容之上?(假设里面的一切对我来说都是新的?)此外,Effe

c++ - 默认初始化整数成员是否首选空初始化器?

我刚刚读了一个commentbyGMan那个classA{public:A():m_ptr()//m_ptrisimplicitlyinitializedtoNULL{}};应该优先于classA{public:A():m_ptr(NULL)//m_ptrisexplicitlyinitializedtoNULL{}};请注意第一个示例中缺少NULL。GMan是对的吗?这可能有点主观,所以“您更喜欢空初始化器进行默认初始化吗?”可能更合适。此外,如果您更喜欢空初始值设定项,这是否适用于其他整数成员?classB{public:B():m_count(),m_elapsed_secs()

c++ - c++11 中首选的初始化方式

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。社区在去年审查了是否重新打开这个问题并让它关闭:原始关闭原因未解决Improvethisquestioninti=0;//(a)OldCstyleshouldIuseit?inti{0};//(b)Bracedirectinitinti{};//(c)Sameas(b)inti={0};//(d)as(b)inti={};//(e)as(c)autoi=0;//(f)auto=intinthiscase.autoi=int{0

c++ - 多变量结构的 '<' 的首选实现

最初这可能看起来过于抽象或哲学化,但我真的很想看看是否有人有令人信服的论据支持一种实现方式优于另一种实现方式。给定operator对于std::pair,这将是更好的实现:returnx.first或:returnx.first我的理解是这两种实现产生的结果相同。后者是否是首选,因为它仅根据operator定义?或者假设一个小于可比较的类型也应该是相等可比较的是合理的吗?有没有其他人看到另一点会在两者之间摇摆你?当然,任何答案都应该是通用的和可扩展的。那么你会使用哪一个,为什么?是否有比上述更好的不同实现方式? 最佳答案 假定对于任