草庐IT

arg-constructor

全部标签

c++ - C++ 是否为纯虚拟类创建默认值 "Constructor/Destructor/Copy Constructor/Copy assignment operator"?

C++编译器是否为这个“类”生成默认函数,如Constructor/Destructor/Copy-Constructor...?classIMyInterface{virtualvoidMyInterfaceFunction()=0;}我的意思是不可能实例化这个“类”,所以我认为没有生成默认函数。否则,人们会说您必须使用虚拟析构函数。这意味着如果我不定义析构函数virtual它将默认创建,而不是virtual。此外,我想知道为纯虚拟接口(interface)定义虚拟析构函数是否合理,如上所示?(所以这里没有使用指针或数据,所以不需要破坏任何东西)谢谢。 最

c++ - 为什么我不能用 foo(char* args[]) 做 foo({"asd","asd1"})?

我正在阅读C++Primer,在第6.2节中它说:"Parameterinitializationworksthesamewayasvariableinitialization."然而当我这样做时:voidfoo(char*args[]){return;}intmain(){char*args[]={"asd","dsa"};//ok.foo({"asd","dsa"});//error.}这是为什么? 最佳答案 作为@T.C.在评论中指出,函数参数中的args被转换为char**因为函数不能将数组作为参数。既然你做不到char**

c++ - 复制省略 : move constructor not called when using ternary expression in return statement?

考虑以下示例:#includeclassobject{public:object(){printf("constructor\n");}object(constobject&){printf("copyconstructor\n");}object(object&&){printf("moveconstructor\n");}};staticobjectcreate_object(){objecta;objectb;volatileinti=1;//With#if0,object'scopyconstructoriscalled;otherwise,itsmoveconstructor

c++ - 定义两个变量 : Is "Type a(arg), b(arg);" completely equivalent to "Type a(arg); Type b(arg);"?

假设我想定义两个{Type}类的变量。构造函数采用1个参数。下面两种方式是否完全等价(编译成相同的目标代码)?Typea(arg),b(arg);和Typea(arg);Typeb(arg);这个问题是在我阅读了一个讨论异常安全的页面后出现的---http://www.gotw.ca/gotw/056.htm有一个指南“在其自己的代码语句中执行每个资源分配(例如,新的),立即将新资源提供给管理器对象。”它举了一个例子:以下代码段是安全的auto_ptrt1(newT);auto_ptrt2(newT);f(t1,t2);但是下面这行是不安全的f(auto_ptr(newT),auto_

c++ - 如果模板 arg 是 const,则将 const 添加到类型

我有一个类:structFoo{vectordata;};我有一个接受Foo&的模板化函数:templatevoidf(T&arg){usingftype=float*;//如果T是常量,我怎样才能使ptr成为constfloat*?我知道add_const和is_const但不知道如何在这里使用它们。(我真正的结构更复杂,我无法直接访问它的内部结构;它实际上是一个OpenCVcv::Mat。)如果需要,我可以使用最近的(C++14/C++17)功能。我会这样使用它:Foofoo1=Foo();f(foo1);//modifiableinfconstFoocfoo=Foo();f(cf

c++ 类继承,未定义对 'Class::Constructor()' 的引用

编辑:在底部发布固定代码。感谢大家的帮助!我刚刚学习C++,但在继承方面遇到了麻烦。我已经搜索和搜索并尝试了所有可能的方法,但我无法在保留我希望它具有的功能的同时编译此代码。我觉得我犯了一个愚蠢的错误,或者我可能只是错过了一些重要的概念,但如果有人能看一下它,我将非常感激!如果我注释掉StarSystemConstructor中创建对象的3行,那么它会编译,所以我知道这与问题有关。#include#include#include#include#includeusingnamespacestd;classSystemBody{public:SystemBody();intsystemb

constructor - 在 kotlin 中,如何将主构造函数中的属性 setter 设为私有(private)?

在kotlin中,如何将主构造函数中的属性setter设为私有(private)?classCity(valid:String,varname:String,vardescription:String=""){funupdate(name:String,description:String?=""){this.name=namethis.description=description?:this.description}}我希望属性name的setter是私有(private)的,而它的getter是公开的,我该怎么做? 最佳答案

constructor - 在 kotlin 中,如何将主构造函数中的属性 setter 设为私有(private)?

在kotlin中,如何将主构造函数中的属性setter设为私有(private)?classCity(valid:String,varname:String,vardescription:String=""){funupdate(name:String,description:String?=""){this.name=namethis.description=description?:this.description}}我希望属性name的setter是私有(private)的,而它的getter是公开的,我该怎么做? 最佳答案

android - Kotlin + Dagger2 : cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method

我收到以下错误:Error:(8,1)error:java.lang.Stringcannotbeprovidedwithoutan@Injectconstructororfroman@Provides-or@Produces-annotatedmethod.我一直在尝试制作一个提供两个合格字符串的模块。这是Dagger的简化设置。@Singleton@Component(modules=[GreetingsModule::class])interfaceAppComponent{funinject(activity:MainActivity)}@Qualifierannotation

android - Kotlin + Dagger2 : cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method

我收到以下错误:Error:(8,1)error:java.lang.Stringcannotbeprovidedwithoutan@Injectconstructororfroman@Provides-or@Produces-annotatedmethod.我一直在尝试制作一个提供两个合格字符串的模块。这是Dagger的简化设置。@Singleton@Component(modules=[GreetingsModule::class])interfaceAppComponent{funinject(activity:MainActivity)}@Qualifierannotation