IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++类的组合 -> 正文阅读

[C++知识库]C++类的组合

C++类的组合


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、以另一个类的对象为数据成员

1.构造函数的写法

  • 构造函数的写法,必须采用初始化参数列表的写法
#include <iostream>
#include <string>

using namespace std;
class Boy
{
public:
	Boy(string name, int age) :name(name), age(age){}
	void print()
	{
		cout << name << "\t" << age << endl;
	}
protected:
	void printDATA()
	{
		cout << name << "\t" << age << endl;
	}
	string name;
	int age;

};
class Girl
{
public:
	Girl(string boyName, int boyAge, string girlName) :boy(boyName, boyAge) //组合类的构造函数
	{
		this->girlName = girlName;
	}
	void print()
	{
		boy.print();
		//boy.printDATA(); 错误 不可访问 boy对于Boy是类外,不可直接访问保护属性
		cout << girlName << endl;
	}
protected:
	string girlName;
	Boy boy;

};

int main()
{
	Girl nv("nan", 18,"nv");
	nv.print();

	while (1);
	return 0;
}

运行结果:
在这里插入图片描述

  • 类的组合构造顺序问题:构造顺序之和定义对象顺序有关,和初始化参数列表无关
#include <iostream>
#include <string>
using namespace std;
class A
{
public:
	A(string str) :str(str)
	{
		cout << str;
	}
	string str;
	
};
class B
{
public:
	B(string str) :str(str)
	{
		cout << str;
	}
	string str;
};
class C
{
public:
	C(string str) :str(str)
	{
		cout << str;
	}
	string str;
};
class D
{
public:
	D(string stra, string strb, string strc) :b(strb), c(strc), a(stra)
	{
		cout << "D" << endl;
	}
	A a;
	B b;
	C c;
};
int main()
{
	D d("A", "B", "C");
	while (1);
	return 0;

}

运行结果:
在这里插入图片描述

二、类中类

  • 依旧收权限限定
  • 访问方式依旧需要类名限定
#include <iostream>
#include <string>
using namespace std;
struct  Node
{
	int data;
	Node* next;
	Node()
	{
		this->next = nullptr;
	}
	Node(int data)
	{
		this->next = nullptr;
		this->data = data;
	}
};

class List
{
public:
	List()
	{
		headNode = new Node;
	}
	void push_front(int data)
	{
		Node* newNode = new Node(data);
		newNode->next = headNode->next;
		headNode->next = newNode;
	}
protected:
	Node *headNode;
public:

	//迭代器-->类模仿指针的行为
	class iterator
	{
	public:
		iterator(Node* pMove=nullptr) :pMove(pMove){}
		void operator=(Node *pMove)
		{
			this->pMove = pMove;
		}
		bool operator != (Node* pMove)
		{
			return this->pMove != pMove;
		}
		iterator operator++()
		{
			pMove = pMove->next;
			return iterator(pMove);
		}
		Node* operator*()
		{
			return pMove;
		}
	protected:
		Node *pMove;
	};
	Node* begin()
	{
		return headNode->next;
	}

	Node* end()
	{
		return nullptr;
	}
};
//类中的枚举类型
class A
{
public:
	enum time{first,second};
protected:
	enum date{ mon, sut, tus };
	//类中的枚举类型也受权限限定
};
int main()
{
	List list;
	for (int i = 0; i < 3; i++)
	{
		list.push_front(i);
	}
	List::iterator iter;
	for (iter = list.begin(); iter != list.end(); ++iter)
	{
		cout << (*iter)->data;
	}
	//cout << A::date::mon << endl; 不可访问
	cout << A::time::first << endl;
	while (1);
	return 0;
}

运行结果:
在这里插入图片描述

三、C++中默认的函数

  • 1.默认构造函数
  • 2.默认拷贝构造函数
  • 3.默认析构函数
  • 4.默认赋值运算
#include <iostream>
#include <string>
using namespace std;

class A
{
public:
	//默认构造函数
	A() = default;
	//默认拷贝构造函数
	A(A& object) = default;
	//void print() = default;
	//默认赋值运算
	A& operator=(A& object) = default;
	//默认析构函数
	~A() = default;
protected:

};
int main()
{
	A a;
	A b = a;
	A c;
	c = a;
	while (1);
	return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:05:10  更:2021-11-28 11:06:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:30:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码