c++拷贝初始化为什么调用的是普通的构造函数?

看了几个回答,似乎都没有弄清楚拷贝构造和赋值操作符,甚至构造函数,我觉得我又要科普一下我的易记法了。

对于拷贝构造来说,归根结底,落脚点在构造函数上。所以调用拷贝构造的时候,一定是这个对象不存在的时候,如下面这句

那么,a是不存在的,而且是通过其它的bulk_item对象构造出来的,那么则调用的是拷贝构造函数。

那么这里就调用的是赋值操作符,因为a是已经存在的对象了,不需要构造了。

至于下面回答调用构造函数的,就纯属乱说的范围了,虽然在构造函数里面有输出信息,然后打印出来了,但是这个构造函数是bulk_item(10)调用然后打印出来的。

}

我对C++中的类了解的不够深入,遇到了关于类的拷贝构造函数的问题。请教一下。按照教程,我写了一个student类头文件,含私有数据成员*name,*num,age。成员函数包括构造函数,拷贝构造... 我对C++中的类了解的不够深入,遇到了关于类的拷贝构造函数的问题。请教一下。
按照教程,我写了一个student类头文件,含私有数据成员*name,*num,age。成员函数包括构造函数,拷贝构造函数、析构函数等。
然后在cpp文件中包含一个使用类的拷贝构造函数的函数,并在main()函数中调用他。
问题:在定义时直接调用函数和先定义后调用,区别在什么地方?希望讲的透彻些。


· 做真实的自己 用良心做教育

千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。

在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化);

--在定义时直接调用函数和先定义后调用,区别在什么地方,没区别,硬要讲的话,就是编译器在给s1复制的时候调用了类似s2复制的方式。

在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化);

--在定义时直接调用函数和先定义后调用,区别在什么地方?
没区别,硬要讲的话,就是编译器在给s1复制的时候调用了类似s2复制的方式。

恩,这个层面我还是能理解的,就是不知道针对上面两张图的情况,定义时初始化和先定义后初始化为什么会造成不同的结果呢?

本回答被提问者和网友采纳

本回答由广州宏天软件股份有限公司提供

第一张应该是s2调用默认的构造函数 第二张是s2得到的是changeage()返回的值 没有调用构造函数

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

}

1、C语言与C++语言的区别?

答: C语言是面向过程语言,C++是面向对象语言(OOP)

     C语言使用函数来实现模块化程序设计,而C++使用类来实现模块化程序设计

2、解释类和对象的关系,并举例说明

答: 类是对象的抽象,对象是类的具体实例

学生是张三的类型,张三是一个具体的学生

3、一个类由几部分成员构成?

答: 两部分,成员变量和成员函数

4、构造函数有什么作用?

5、简述构造函数的特点?

答: (1)必须公有 (2)函数名和类名一样 (3)无返回值 (4)可以带参数初始化数据成员

6、什么是默认构造函数?

答: 构造函数不带参数或带参数参数都有默认值

7、程序员在定义类时是否必须写一个构造函数,为什么?

答:不是,如果程序员没有显式声明一个构造函数,那么编译器自动提供默认构造函数

8、什么是函数重载,并举例说明?

9、什么是初始化列表,有什么作用,什么情况下必须使用初始化列表?

答:初始化数据成员,const和引用类型

10、什么是const成员函数,它有什么作用,通常情况下哪些函数会是const成员函数?

11、析构函数有什么作用,析构函数在什么情况下会被调用

答:释放对象占用的内存空间,对象被销毁时或离开它的作用域

12、一个类是否必须要定义一个析构函数,什么情况下必须要写析构函数?

答:类中有指针成员变量指向堆空间,此时必须定义一个析构函数来释放指针指向的堆空间,避免内存泄露

13、什么是浅拷贝,浅拷贝会产生什么问题?

答:两个对象的指针指向同一块堆空间,浅拷贝会产生两个问题: (1) 改变其中一个,另一个也跟着改变

(2) 容易造成二次删除

14、什么是函数链,使用函数链需要注意什么问题

15、能否返回一个指向局部变量的指针或引用,为什么?

答:不能, 局部变量在函数结束后内存空间就被回收,指针会变成野指针,引用将是一个无效的引用

答:const的作用:不能修改形参的值

17、什么是this指针,解释对象调用成员函数时传递对象的过程

答:this指针指向对象自身,对象调用成员函数时,会默认将对象自身传递给该函数,在函数体内不直接使用对象名,而是使用this指针,即this指针是指向该对象,指向调用者

18、静态局部变量和局部变量的区别,静态局部变量和静态全局变量的区别(生命周期和作用范围分析)

答:作用域:只能在块中或函数体内

      生命周期:静态局部变量在整个程序运行期间,局部变量函数结束后就被回收

      存储区:静态局部变量存储在静态存储区,而局部变量存储在栈区

19、简述类的普通成员变量和静态成员变量的区别

答:每一个对象都会为它的普通成员变量在内存中保留一块空间来存储它的值,而对于静态成员变量整个类中只有一份拷贝,所有的对象都共享这块空间

20、调用类的静态成员的两种方式是什么?

  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...

  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...

  • 窗外荷花映月红,微风飘来乌依窗。芝芝喳喳鸣声啼,依依侬依道别离。橡树秋色叶更浓,抬头金色满山扬,莎莎风声景色凉,徐...

  • 狂欢 -jeff 这一天,让无数人等了很久。这一天,让无数人为之疯狂。这一天,网络疯了,电商疯...

  • 不去做,就永远不会有收获;不相信,就永远不会有成功;不可能,就永远停留在现在;未来是靠把握机会和努力奋斗的,相信永...

  • 脱离学生会的那天晚上,我清清楚楚的记得我喝吐了,喝的烂醉如泥,这是我大学以来第一次喝醉,究其原因,并不是为了庆贺,...

  • }

    我要回帖

    更多关于 c++初始化结构体 的文章

    更多推荐

    版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

    点击添加站长微信