当前位置 : 主页 > 编程语言 > c语言 >

C++ ---->再谈构造函数(升级版)_03

来源:互联网 收集:自由互联 发布时间:2023-09-03
-------大类 ~~ 大对象 ---最终章 各位好友,本期正式开启 大类 ~~ 大对象 ---最后一个模板 ----内部类 与匿名对象 下面进入开战环节 : 1. 内部类 ----概念: 如果一个类定义在另一个类的内

------->大类 ~~ 大对象  --->最终章  

各位好友,本期正式开启 大类 ~~ 大对象 --->最后一个模板 ---->内部类 与匿名对象

下面进入开战环节 :>

1. 内部类

---->概念:>如果一个类定义在另一个类的内部, 这个内部就是内部类。内部类是一个独立的类,不属于外部类, 更不能通过外部类的对象去访问内部类的成员, 外部类对内部类没有任何优越的访问权限 !

---->注意:>内部类就是外部类的友元类 !内部类可以通过外部类的对象参数来进行访问外部类中所有任何成员。但是外部类不是内部类的友元 !

---->特性:>

(1)内部类可以定义在外部类中 public private protect 

(2)内部类可以直接访问外部类中的 static 成员, 不需要外部类的对象 / 类名;

(3)sizeof(外部类) == 外部类, 与内部类没有任何关系。


----->验证一:>

C++ ---->再谈构造函数(升级版)_03_编译器自动优化


----->验证二:>

--->计算内部类大小 

#include <iostream>
using std::cout;
using std::endl;

// 情形一
class A
{
public:
  	class B
    {
    	public:
        	void Func()
            {
            	
            }
        private:
        	int b;
    }
private:
    static int m;
    int n = 21
};

int A::m = 24;

int main()
{
   cout << sizeof(A) << endl;
   
   A aa1		// 此处仅仅为了整体上好看一些
   return 0;
}

#include <iostream>
using std::cout;
using std::endl;

//情形二
class A
{
public:
  	class B
    {
    public:
        void Func(const A& a)
        {
        	cout << m << endl;
          cout << a.n << endl;
        }
     private:
        int b;
    };
private:
    static int m;
    int n;
};

int A::m = 24;

int main()
{
  cout << sizeof(A) << endl;
  
  A aa1;
  A::B bb1;
  return 0;
}

为了方便好友们, 获得更好地观感体验 与更好地理解 !现 附上有彩色的代码图样, 如下 :>

----->情节一:>

---->无参数接收:>

C++ ---->再谈构造函数(升级版)_03_内部类_02


如果,内部类 在类中 自定义变量, 此时 --->需要进行计算其大小 !如下所示 :>

C++ ---->再谈构造函数(升级版)_03_匿名对象_03


----->情节二 :>

---->有参数接收:>

C++ ---->再谈构造函数(升级版)_03_匿名对象_04


   如果内部类 在类中 有自定义变量 此时 --->需要进行计算其大小 !如下所示 :>

C++ ---->再谈构造函数(升级版)_03_编译器自动优化_05


2. 匿名对象

------>生命周期只在当前行 

--->主体 :>

C++ ---->再谈构造函数(升级版)_03_内部类_06


---->测试环节_01 :>

C++ ---->再谈构造函数(升级版)_03_编译器自动优化_07


---->如下,修订版本:>

----->前奏:>

C++ ---->再谈构造函数(升级版)_03_内部类_08


---->添加 const 效果图示:>

C++ ---->再谈构造函数(升级版)_03_编译器自动优化_09


---->测试环节_02 :>

---->完整版:>

C++ ---->再谈构造函数(升级版)_03_编译器自动优化_10


各位好友, 请注意:>  代码模块  ---->颜色分类搭配 !如此,可方便梳理上述流程  ---> 调试过程


好友们, 至此 ,本章节 --->大类 ~~ 大对象 已全部完成 !六大默认成员函数, 其中前四个重中之重

现 已进入~~尾声 !不过, 还是想给好友们, 扩展一些额外的知识点 !

------>编译器优化:>

----->着 拷贝对象:>

---->实现环节:>

#include <iostream>
using std::cout;
using std::endl;

class A
{
public:
  // 构造函数
  A(int a)
    :_a(a)
  {
  	cout << "A(int a)" << endl;  
  }
  // 拷贝构造函数
  A(const A& aa)
  {
  	cout << "A(const A& aa)" << endl;
  }
  // 赋值重载运算函数
  A% operator=(const A& aa)
  {
  	cout << "A& operator=(const A& aa)" << endl;
    if(this != &aa)
    {
    	return *this;
    }			// 避免使用解引用, 这样会相当麻烦 ! 使用取地址, 简单易懂 !!
    _a == aa._a;
  }
  // 析构函数
  ~A()
  {
  	cout << "~A()" << endl;
  }
private:
  int _a;
};

void Func1(A aa)
{

}

A func2()
{
	A aa;
  return aa;
}


----->彩色代码模块,观感比较舒服 :>

C++ ---->再谈构造函数(升级版)_03_匿名对象_11


(1)测试 一 :>

C++ ---->再谈构造函数(升级版)_03_编译器自动优化_12

C++ ---->再谈构造函数(升级版)_03_编译器自动优化_13


(2)测试 二 :>

----->前奏:>

C++ ---->再谈构造函数(升级版)_03_匿名对象_14


----->正式版:>

C++ ---->再谈构造函数(升级版)_03_编译器自动优化_15

C++ ---->再谈构造函数(升级版)_03_编译器自动优化_16


各位好友, 至此, 本章节 --->大类 ~~ 大对象 ----->已 告一段落 !历时整整十六天的奋战 !既有辛苦, 也有收获 !真正理解 与掌握 --->类 与对象, 才算是正式迈进了 C++殿堂 !这座宝殿充满着无数数不尽的财富, 正等待着 --->我们 --->这些追寻者,探索者去寻找,去挖掘  !终究,是能在这座殿堂 --->收获一个幸福美满的人生 !

毕竟, 人活着, 不就是追求幸福人生,找寻自己存在的意义吗 !

上一篇:【C语言】自定义类型之【枚举】
下一篇:没有了
网友评论