类中嵌套另一个类时,调用构造,析构,拷贝,赋值运算符等函数的次序

class A

{

public:

A(int a = 0)

:a(a)

{

cout << "A()" << endl;

}

A(const A& other)

{

cout << "A&()" << endl;

}

A& operator =(const A& other)

{

cout << "operator = " << endl;

return *this;

}

~A()

{

cout << "~A()" << endl;

}

private:

int a;

};

class B

{

public:

//B( )  // B* const this 默认参数在此会有this对象会调用类A的构造函数构造自己的

//  //数据成员a

//{

// a = 0; // A()  A()  operator =  ~A  B() ~B()  ~A()

// // a = 0   ===========  a.operator=(0);

// // A& operator =(const A& other)函数

// //在传参时用 0 调用类A的构造函数构造一个临时对象_a(0)给other

// // _a 出了类A的赋值运算符函数会自动调用类A的析构(形参嘛)

// cout << "B()" << endl;

//}

//B() // B* const this 默认参数  在此会有this对象会调用类A的构造函数构造自己的

// // 数据成员a

// :a(0)   //A()  B()  ~B() ~A()

//{

// cout << "B()" << endl;

//}

B(A d = 0)   // B* const this 默认参数 在此会有this对象会调用类A的构造函数构造自己

// 的数据成员a

//  参数 A d = 0; 会调用类A的构造函数构造对象d

{

a = d; // A()  A()  operator =   B()  ~A   ~B()  ~A()

// a = d   ===========  a.operator=(d);

// A& operator =(const A& other) 函数

// 在传参时引用传递,不会产生临时对象

// 形参 d 出了类B的构造函数会自动调用类A的析构

//如果A operator =(const A& other) 函数是值返回

//返回时会有一个无名对象产生

// A()  A()  operator =  A&()  ~A  B() ~A  ~B() ~A()

cout << "B()" << endl;

}

~B()

{

cout << "~B()" << endl;

}

private:

A a;

};

时间: 2024-11-06 10:19:58

类中嵌套另一个类时,调用构造,析构,拷贝,赋值运算符等函数的次序的相关文章

[Swift通天遁地]二、表格表单-(3)在表格中嵌套另一个表格并使Cell的高度自适应

本文将演示如何在表格中嵌套另一个表格并使Cell的高度自适应,创建更加强大的布局效果. 在项目文件夹[DemoApp]上点击鼠标右键,弹出右键菜单. [New File]->[Cocoa Touch Class]->[Next]-> [Class]:CustomizeUITableViewCell ,类名. [Subclass of]:UITableViewCell ,父类 [Language]:Swift ->[Next]->[Create]在项目导航区,打开刚刚创建的代码

在C#中使用Panel控件实现在一个窗体中嵌套另一个窗体

在C#中使用Panel控件实现在一个窗体中嵌套另一个窗体ShowAllPage sAllPage = new ShowAllPage();          //  sAllPage.FormBorderStyle = FormBorderStyle.None;           // sAllPage.Dock = DockStyle.Fill;            sAllPage.TopLevel = false;            this.MainPanel.Controls.

“全栈2019”Java第八十七章:类中嵌套接口的应用场景(拔高题)

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第八十七章:类中嵌套接口的应用场景(拔高题) 下一章 "全栈2019"Java第八十八章:接口中嵌套接口的应用场景 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"J

怎样在一个fragment or 随意类中操作还有一个fragment中的方法

1 怎样在acitivty中运行fragment中的方法: 首先获得这个Fragment的对象 xxxFragment fragmentObject = (xxxFragment) getFragmentManager.findFragmentByTag("xx"); 2 怎样在Fragment中运行activity中的方法: 第一种:让acitivity继承接口 另外一种:在fragment中使用getActivity()可是要加上acitivity的名字,即: ((MainActi

在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句:

如果是String类型的字符串进行判空的时候: <if test="inspectOrg != null and inspectOrg != ''"> INSPECT_ORG = #{inspectOrg} </if> 但是如果是实体类中的Integer类型,就是去掉空字符串的判断: <if test="inspectTaio != null"> AND INSPECT_TAIO = #{inspectTaio} </if&

Swift类中如何创建一个对外只读对内可读写的属性

很简单用private修饰符,后面跟限制关键字set: class Day{ private(set) var rawValue:Int = 0 func showRawValue(){ print("raw is \(rawValue)") } func forwardRawValue(){ rawValue += 1 } } 不过如上上述类定义在playground中的话,实际你会发现如果去掉后面的(set)照样可以在外部访问: let day = Day() day.rawVal

多态 static 表示静态 编译的时候只调用Animal类中的eat 不会调用其他类中的eat 不建议用static;

package cn.zmh.A; //动物类public class Animal {   static void eat(){          }} //猫类 class Cat extends Animal {   static void eat(){        System.out.println("猫吃鱼");    }}  //狗类 class Dog extends Animal {       static void eat(){            Syste

类中方法的两种调用方式

class Foo(object): def func(self, name): print(name) # 第一种,通过实例对象调用func方法 foo = Foo() foo.func('allin') # 第二种,通过类名调用func方法 foo = Foo() Foo.func(foo, 'allin') # 两种方法等价 原文地址:https://www.cnblogs.com/xiangxiaolin/p/11185078.html

【练习】判断类中是否包含一个受保护的静态整形常量val

下面的代码在老的编译器上不work,我用gcc 4.8.2编译没问题 template <typename T> class is_class {     typedef char YES;     typedef int NO;     template <typename U> static YES matcher(void (U::*)(void));     template <typename> static NO matcher(...); public: