草庐IT

default-public

全部标签

C++ 语法 : default and delete modifiers

今天我偶然发现了这样一个代码片段:classA{A()=default;A(constA&)=delete;...}我从未见过delete或default关键字。它们是C++11标准的一部分吗?它们的用途是什么? 最佳答案 现在可以默认或删除特殊成员函数。已删除的成员函数仍然参与重载决议,但如果它被选中,则程序格式错误并且编译停止并提供有用的诊断。这是编写不可复制类之类内容的正确方法,并且用户会收到正确的错误消息。默认成员函数“做它应该做的”,例如默认的默认构造函数默认初始化所有基类和成员,并且主体为空;默认复制构造函数复制每个基对

c++ - "defau1t:"(不是 "default:")是标签的有效值吗?

这个问题在这里已经有了答案:Defaultcaseinaswitchcondition(3个答案)关闭6年前。为什么这段代码可以正常编译和运行。我在l的位置写了defau1t而不是default,1。#includeintmain(){inti=4;switch(i){case3:break;defau1t:break;}}

c++ - 纯虚类中的构造函数应该是 "protected"还是 "public"?

以下示例来自《InsideC++objectmodel》一书classAbstract_base{public:virtual~Abstract_base()=0;virtualvoidinterface()const=0;virtualconstchar*mumble()const{return_mumble;}protected:char*_mumble;};作者说如果我想初始化纯虚基类的数据成员_mumble,应该实现一个“protected构造函数”。但为什么要保护?为什么“publicconstructor”不适合这个类?感谢您的回答,如果有例子就完美了。

c++ - 'default' 作为变量名

在调试一些代码时,我遇到了一个名为default的数组。我认为不允许关键字作为变量名。#include"stdafx.h"#includeintmain(){intdefault=5;printf("%d\n",default);return0;}现在上面的代码可以在VS2008上顺利编译。'default'不是关键字吗?为什么它可以作为变量名?副作用?附注:Infragistics::Win::UltraWinToolbars::ToolbarsCollection有一个同名的属性! 最佳答案 这是一个knownissue在VC+

c++ - 堆内存是每个进程的吗? (或)不同进程共享的公共(public)内存位置?

每个进程都可以使用堆内存来存储和共享进程内的数据。我们在编程中有一个规则,每当我们在堆内存中占用一些空间时,我们需要在作业完成后释放它,否则会导致内存泄漏。int*pIntPtr=newint;...deletepIntPtr;我的问题:堆内存是每个进程的吗?如果是,thenmemoryleakispossibleonlywhenaprocessisinrunningstate.如果不是,thenitmeansOSisabletoretaindatainamemorysomewhere.Ifso,isthereawaytoaccessthismemorybyanotherprocess

c++ - 当我从公共(public)成员函数返回引用时,为什么我可以暴露私有(private)成员?

在代码片段中,我能够访问类范围之外的私有(private)成员变量。虽然永远不应该这样做,但为什么在这种情况下允许这样做呢?通过引用接收返回的私有(private)变量是一种不好的做法吗?#include#includeclassfoo{intx;public:foo(inta):x(a){}intmethodOne(){returnx;}int&methodTwo(){returnx;}};intmain(){fooobj(10);int&x=obj.methodTwo();x=20;//Withthisstatement,modifyingthestateofobj::xstd::

c++ - 我相信这是 clang++ 中与访问类的公共(public)成员函数相关的错误

以下doesn'tcompile在clang中:#includevoidf(){std::cout产量:main.cpp:13:16:error:unknowntypename'p';didyoumean'S::p'?s.operatorp()();^S::pmain.cpp:6:19:note:'S::p'declaredheretypedefvoid(*p)();^但它应该,因为表达式s.operatorp()()访问对象S::s的公共(public)成员函数。我错过了什么吗?如果我错了,我将不胜感激标准中的引述来支持答案。 最佳答案

c++ - 公共(public)变量和私有(private)变量的命名约定?

把m_varname当public用同一个类用variable当private是不是错了 最佳答案 一些问题:为什么要有公共(public)变量?以_和__开头的标识符是为系统库保留的。在实践中,这通常并不重要,但很高兴知道。话虽如此,创建命名约定并没有错,无论它看起来如何。只要保持一致即可。 关于c++-公共(public)变量和私有(private)变量的命名约定?,我们在StackOverflow上找到一个类似的问题: https://stackover

c++ - 当其他构造函数存在时,为什么 "ctor() = default"会改变行为?

为什么structwrapper{explicitwrapper(void*);wrapper()=default;intv;};intmain(){returnwrapper().v;}//YoushouldrunthisinDebugmode返回0xCCCCCCCC,而structwrapper{wrapper()=default;intv;};intmain(){returnwrapper().v;}和structwrapper{intv;};intmain(){returnwrapper().v;}都返回0? 最佳答案 在值

iphone - 警告 : XXXX has different visibility (default) in YYYY and (hidden) in ZZZZ

我正在尝试制作一个使用OpenCV和另一个C++库的iPhone应用程序。它似乎可以很好地编译和链接。它确实有效。只是我想摆脱这个丑陋的警告:ld:warning:std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>,intconst&)hasdifferentvisibility(default)in/Users/nacho4d/Documents/Projects/iOS/iAR/opencv_device/lib/libcxcore.a(cxdatastructs.o)and(hidden)in/Users/nach