草庐IT

Initialization

全部标签

c++ - C++默认构造函数

给出以下代码:classtemp{public:stringstr;intnum;};intmain(){temptemp1;temptemp2=temp();cout两者之间有什么区别?temptemp1;和temptemp2=temp(); 最佳答案 temptemp1;这将在名为temp的实例上调用temp1的默认构造函数。temptemp2=temp();这会在临时对象上调用temp的默认构造函数,然后以临时对象作为参数在temp2上调用编译器生成的copy-constructor(当然,这假定编译器不忽略副本;这取决于编译

c++ - 数组的初始化体作为函数参数(C-array),这可能吗?

我正在寻找下一种情况的帮助:我有一些类和一些方法,语法是这样的:classSomeClass{public:voiddoSomething(int*a);};所以我想像这样调用这个方法SomeClass::doSomething({0,1,2,3,4});任何语言都可以吗?欢迎任何(C++、C、obj-c、obj-c++)实现!我知道这个初始化block是一个数组体,比如int*a={0,1,2,3,4};SomeClass::doSomething(a);但我认为,如果在函数调用之前没有临时变量(因为我们不需要知道类客户端中的参数类型),接口(interface)看起来会很棒。那么,

c++ - 数组的初始化体作为函数参数(C-array),这可能吗?

我正在寻找下一种情况的帮助:我有一些类和一些方法,语法是这样的:classSomeClass{public:voiddoSomething(int*a);};所以我想像这样调用这个方法SomeClass::doSomething({0,1,2,3,4});任何语言都可以吗?欢迎任何(C++、C、obj-c、obj-c++)实现!我知道这个初始化block是一个数组体,比如int*a={0,1,2,3,4};SomeClass::doSomething(a);但我认为,如果在函数调用之前没有临时变量(因为我们不需要知道类客户端中的参数类型),接口(interface)看起来会很棒。那么,

c++ - C++ 中的默认初始化

今天早上我问自己一件事,但我找不到合适的词来“谷歌”:假设我有:structFoo{intbar;};structFoo2{intbar;Foo2(){}};structFoo3{intbar;Foo3():bar(0){}};现在如果我default实例化Foo、Foo2和Foo3:Foofoo;Foo2foo2;Foo3foo3;bar成员在哪种情况下正确初始化?(好吧,Foo3显然明确地初始化了它,这里只显示与Foo2的区别,所以问题主要是关于前两个。)谢谢!:) 最佳答案 只有foo3会出现在所有上下文中。foo2和foo将

c++ - C++ 中的默认初始化

今天早上我问自己一件事,但我找不到合适的词来“谷歌”:假设我有:structFoo{intbar;};structFoo2{intbar;Foo2(){}};structFoo3{intbar;Foo3():bar(0){}};现在如果我default实例化Foo、Foo2和Foo3:Foofoo;Foo2foo2;Foo3foo3;bar成员在哪种情况下正确初始化?(好吧,Foo3显然明确地初始化了它,这里只显示与Foo2的区别,所以问题主要是关于前两个。)谢谢!:) 最佳答案 只有foo3会出现在所有上下文中。foo2和foo将

c++ - 我可以在 C++ 运行时初始化静态 const 成员吗?

是否可以在运行时初始化我的类的静态const成员?这个变量在我的程序中是一个常量,但我想将它作为命令行参数发送。//A.hclassA{public:staticconstintT;};//inmainmethodintmain(intargc,char**argv){//howcanIdosomethinglikeA::T=atoi(argv[1]);}如果无法做到这一点,我应该使用什么类型的变量?我需要在运行时初始化它并保留常量属性。 最佳答案 您不能依赖main开始后生成的数据来初始化static变量,因为在main的翻译单元

c++ - 我可以在 C++ 运行时初始化静态 const 成员吗?

是否可以在运行时初始化我的类的静态const成员?这个变量在我的程序中是一个常量,但我想将它作为命令行参数发送。//A.hclassA{public:staticconstintT;};//inmainmethodintmain(intargc,char**argv){//howcanIdosomethinglikeA::T=atoi(argv[1]);}如果无法做到这一点,我应该使用什么类型的变量?我需要在运行时初始化它并保留常量属性。 最佳答案 您不能依赖main开始后生成的数据来初始化static变量,因为在main的翻译单元

c++ - 这个 C++ 成员初始化行为是否定义良好?

假设我们有一个类B,它有一个默认初始化为42的member。此类知道如何打印其member的值(它在构造函数中这样做):structB{B():member(42){printMember();}voidprintMember()const{std::cout然后我们添加一个类A,它接收一个对B的const引用并要求B打印它的值:structA{A(constB&b){b.printMember();}};最后我们添加另一个类Aggregate,它聚合了一个A和一个B。棘手的部分是A类型的对象a是在对象b类型B之前声明的,然后是>a使用对b的(尚未生效的?)引用进行初始化:struct

c++ - 这个 C++ 成员初始化行为是否定义良好?

假设我们有一个类B,它有一个默认初始化为42的member。此类知道如何打印其member的值(它在构造函数中这样做):structB{B():member(42){printMember();}voidprintMember()const{std::cout然后我们添加一个类A,它接收一个对B的const引用并要求B打印它的值:structA{A(constB&b){b.printMember();}};最后我们添加另一个类Aggregate,它聚合了一个A和一个B。棘手的部分是A类型的对象a是在对象b类型B之前声明的,然后是>a使用对b的(尚未生效的?)引用进行初始化:struct

C++ 默认初始化和值初始化 : which is which, 在何时以及如何可靠地初始化模板类型成员时调用

我的问题与this有点重叠。和其他几个类似的。这些有一些很好的答案,但我已经阅读了它们,但我仍然感到困惑,所以请不要认为这个问题是重复的。所以,我有以下代码:classA{public:int_a;}voidmain(){Ainst1;A*inst2=newA;A*inst3=newA();}_a在inst1和inst2中未初始化,在inst30/。哪个初始化被称为哪个,为什么代码会这样工作?请考虑到我手头没有C++03标准,但我有最后的C++11草案(不过我正在按照'03标准编程),所以引用'03标准或引用'11非常欢迎。P。S.这项研究的最初任务是正确地对任意模板类型T的成员进行z