有个类A(有无参默认构造函数),然后main函数中,定义了一个类A的对象,代码是这样:A a=A();
请问:这是通过A()临时建立一个类对象然后赋给a,然后再释放这个临时对象,还是等价"A a();"?我在构造函数和析构函数中加了输出的调试语句,但却只显示出一次类A的构造和析构
5条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
oyljerry 2016-12-30 09:21最佳回答 专家已采纳A a=A();
这样也是调用的构造函数,只是所谓的复制构造函数。它不会生成临时对象,再拷贝而是只有一次构造析构。
采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
查看更多回答(4条)
报告相同问题?
提交
相关推荐 更多相似问题
- 2016-12-30 09:08回答 5 已采纳 ``` A a=A(); ``` 这样也是调用的构造函数,只是所谓的复制构造函数。它不会生成临时对象,再拷贝而是只有一次构造析构。
- 2017-07-02 08:20回答 1 已采纳 第一张,第二张定义时用的是小括号( )。 编译器会认为你尝试定义一个函数。 对类的成员函数而言,除了在类体中声明外,还需要在类体外定义。(inline方式在类体中定义亦可)。 第三张是初
- 2015-11-28 22:17回答 6 已采纳 ``` template Singleton::Worker Singleton::worker; // 就是这句编译不通过,纠结了一晚上了,浪费了许多时间,不知道该怎么写,求大神们指
- 2018-08-07 21:03liitdar的博客 本文主要介绍在 C++ 编程语言中,创建类的对象(类的初始化)的两种方法,这两种方法分别为:“直接使用类名创建对象”和“使用 new 关键字创建对象”。 1 概述 “直接使用类名创建对象”和“使用 new 关键字创建...
- 2021-03-31 17:03大彤小忆的博客 3. 对象的初始化和清理3.1 构造函数和析构函数3.2 构造函数的分类及调用3.3 拷贝构造函数调用时机3.4 构造函数调用规则3.5 深拷贝与浅拷贝3.6 初始化列表3.7 类对象作为类成员4.2.8 静态成员 3. 对象的初始化和清理 ...
- 2021-04-11 14:23作业抄不完的博客 关于C++ new动态创建对象数组并初始化的方法 #include <iostream> #include <string> #include <stdlib.h> class student{ private: static int object_count; int score; string name; ...
- 2019-11-16 22:45回答 1 已采纳 https://zhidao.baidu.com/question/1894827085497374900.html
- 2015-06-17 01:10回答 5 已采纳 这个需要c++11才能支持,你的编译器是什么?
- 2018-01-30 09:18回答 5 已采纳 m_name = new char[strlen(name) + 1]; this->m_name = new char[strlen(t.m_name) + 1]; 改成如上两句就行了
- 2018-08-20 17:17liitdar的博客 本系列文章主要介绍 C++ 编程语言中类对象的赋值操作、复制操作,以及两者之间的区别,另外还会介绍“深拷贝”与“浅拷贝”的相关知识。 本文为系列文章的第一篇,主要介绍 C++ 编程语言中类对象的赋值的相关知识。...
- 2020-11-11 15:55W24-的博客 文章目录初始值默认初始化内置类型的默认初始化类类型的默认初始化 初始值 在这里,对象(object) 是指一块能存储数据并具有某种类型的内存空间,而不单单指在与类有关的场景下使用的“对象”这个词。 当对象在创建...
- 2019-08-05 08:38C语言技术网-码农有道的博客 C++中的类(class)可以看成结构体的升级版,类也是一种构造类型,但是进行了一些扩展,类的成员不但可以有变量,还可以有函数,通过类定义出来的变量也有特定的称呼,叫做对象。 示例(book205.cpp) ...
- 2015-08-18 02:33回答 2 已采纳 类成员的初始化顺序是他们在类定义中出项的顺序,而不是他们在初始化列表中出现的顺序。 所以在你的初始化列表中,n1 先初始化,这时引用了还没有初始化的 n2 的值。
- 2018-05-01 15:55回答 1 已采纳 ``` #include #include #include #include using namespace std; int n,c,a[10000],b
- 2018-04-18 06:49回答 2 已采纳 ``` 也可以用DP #include #include int main() { int count; int a[100];
- 2018-08-20 20:33liitdar的博客 本系列文章主要介绍 C++ 编程语言中类对象的赋值操作、复制操作,以及两者之间的区别,另外还会介绍“深拷贝”与“浅拷贝”的相关知识。 本文为系列文章的第二篇,主要介绍 C++ 编程语言中类对象的复制的相关知识。...
- 2020-04-12 16:45一只没有情感的机器猪的博客 当定义结构体变量时,可以通过两种方式初始化它:使用初始化列表或构造函数。
- 2018-08-21 11:03liitdar的博客 本系列文章主要介绍 C++ 编程语言中类对象的赋值操作、复制操作,以及两者之间的区别,另外还会介绍“深拷贝”与“浅拷贝”的相关知识。 本文为系列文章的第三篇,主要介绍 C++ 编程语言中的“深拷贝”和“浅拷贝”...
- 2016-05-26 07:28回答 2 已采纳 这是C++98/03的缺陷。 如果你的编译器支持C++11可以在构造函数初始化器中初始化类成员数组 ``` #include using namespace std; class A {
- 2021-03-30 20:11大彤小忆的博客 对象的初始化和清理4. C++对象模型和this指针5. 友元6. 运算符重载7. 继承8. 多态 1. 类和对象概述 C++在C语言的基础上增加了面向对象编程,C++支持面向对象的程序设计。类是C++的核心特性,通常被称为用户定义...
- 没有解决我的问题, 去提问