返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++类的对象作类成员调用构造、析构函数及静态成员实例分析
  • 826
分享到

C++类的对象作类成员调用构造、析构函数及静态成员实例分析

2023-06-30 17:06:59 826人浏览 安东尼
摘要

这篇文章主要介绍了c++类的对象作类成员调用构造、析构函数及静态成员实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++类的对象作类成员调用构造、析构函数及静态成员实例分析文章都会有所收获,下面我们一起

这篇文章主要介绍了c++类的对象作类成员调用构造、析构函数及静态成员实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++类的对象作类成员调用构造、析构函数及静态成员实例分析文章都会有所收获,下面我们一起来看看吧。

类对象作为成员

C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员

例如:

class Phone {}class Person{    Phone p;}

tips:当类中成员是其他类对象时,我们称该成员为 对象成员

Person类中有对象p作为成员,Phone为对象成员,那么当创建Person对象时,Phone与Person的构造和析构的顺序是谁先谁后?

那让我们在两个类中加上一些输出语句做提示就好了,可以清晰的看到构造和析构的顺序。

示例:

#include<iOStream>using namespace std;//类对象作为类成员class Phone{public:Phone(string P_name){p_name = P_name;        cout<<"Phone类有参构造"<<endl;}    ~Phone(){cout << "Phone析构" << endl;}string p_name;};class Person{public:Person(string m_Name,string p_Name):m_name(m_Name),m_PName(p_Name) {        cout << "Person构造" << endl;}//初始化列表    ~Person(){cout << "Person析构" << endl;}string m_name;Phone m_PName;};void test01(){Person p1("张三", "华为nova7");Person p3(p1);//调用默认拷贝构造函数p3.m_name = "李白"; p3.m_PName.p_name = "iphone MAX";cout << p1.m_name << "拿着" << p1.m_PName.p_name << endl;cout << p3.m_name << "拿着" << p3.m_PName.p_name << endl;}int main(){test01();}

C++类的对象作类成员调用构造、析构函数及静态成员实例分析

从结果图中看出同时调用有参构造的时候,先调用对象成员的构造,再调用本类构造

析构的顺序相反

静态成员

定义和分类

静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员

静态成员分为:

静态成员变量

  • 所有对象共享同一份数据

  • 在编译阶段分配内存

  • 类内声明,类外初始化

静态成员函数

  • 所有对象共享同一个函数

  • 静态成员函数只能访问静态成员变量

静态成员变量

class Person{public:static int m_A; private:static int m_B; };int Person::m_A = 10;int Person::m_B = 10;void test01(){//静态成员变量两种访问方式//1、通过对象Person p1;p1.m_A = 100;cout << "p1.m_A = " << p1.m_A << endl;Person p2;p2.m_A = 200;cout << "p1.m_A = " << p1.m_A << endl; //共享同一份数据cout << "p2.m_A = " << p2.m_A << endl;//2、通过类名cout << "m_A = " << Person::m_A << endl;//cout << "m_B = " << Person::m_B << endl; //私有权限访问不到}int main() {test01();system("pause");return 0;}

静态成员变量也是有访问权限的,无论是public或者是private在类内都可以被访问,m_A和m_B在类内定义在类外初始化,还记得类外初始化吗,就是变量类型加类名加::变量名=值;同时可以通过对象和类名两种方式访问静态成员变量。

静态成员函数

class Person{public:int getB(){return m_B;}static int m_A;int m_C;//非静态成员变量//静态成员函数static void func(){m_A = 100;//m_C = 20;cout << "static void func 的调用" << endl;}private:static int m_B;static void func2(){cout << "static void func 的调用" << endl;}};int Person::m_A = 100;//类外外面初始化int Person::m_B = 200;void test03(){//调用方式有两种//1、通过对象调用Person p;p.func();//通过类名调用Person::func();//类外访问不到静态成员函数,静态成员函数也有访问权限}

静态成员函数也有权限的控制,代码里写了func是公共权限,func2是私有权限;静态成员函数也有对象调用和类名调用两种方式,但是都无法调用私有权限的静态成员函数。

注意事项:静态成员函数不可以访问非静态成员变量,无法区分到底是哪个对象的属性,只有公用的静态成员变量才可以被访问。

关于“C++类的对象作类成员调用构造、析构函数及静态成员实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C++类的对象作类成员调用构造、析构函数及静态成员实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网其他教程频道。

--结束END--

本文标题: C++类的对象作类成员调用构造、析构函数及静态成员实例分析

本文链接: https://lsjlt.com/news/330277.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++类的对象作类成员调用构造、析构函数及静态成员实例分析
    这篇文章主要介绍了C++类的对象作类成员调用构造、析构函数及静态成员实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++类的对象作类成员调用构造、析构函数及静态成员实例分析文章都会有所收获,下面我们一起...
    99+
    2023-06-30
  • C++分析类的对象作类成员调用构造与析构函数及静态成员
    目录类对象作为成员静态成员定义和分类静态成员变量静态成员函数总结类对象作为成员 C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员 例如: class Phone {} ...
    99+
    2024-04-02
  • C++类的静态成员变量实例分析
    本文小编为大家详细介绍“C++类的静态成员变量实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++类的静态成员变量实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、成员变量的回顾通过对象名能够访...
    99+
    2023-06-30
  • C++分析讲解类的静态成员函数如何使用
    目录一、未完成的需求二、问题分析三、静态成员函数四、小结一、未完成的需求 统计在程序运行期间某个类的对象数目保证程序的安全性(不能使用全局变量)随时可以获取当前对象的数目 在C++分...
    99+
    2024-04-02
  • c++中类的构造函数可以初始化静态成员变量吗
    c++ 中类的构造函数可以初始化静态成员变量。初始化语法如下:在构造函数中使用 staticmembervariable = ...; 声明。静态成员变量仅在第一次执行构造函数时初始化一...
    99+
    2024-05-09
    c++
  • C++类初探常量成员函数与构造函数初始值列表分析
    这篇文章主要讲解了“C++类初探常量成员函数与构造函数初始值列表分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++类初探常量成员函数与构造函数初始值列表分析”吧!头文件mycpp.h#...
    99+
    2023-06-04
  • C++类、对象、构造函数及析构函数怎么定义使用
    这篇文章主要介绍“C++类、对象、构造函数及析构函数怎么定义使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++类、对象、构造函数及析构函数怎么定义使用”文章能帮助大家解决问题。C++类与对象C...
    99+
    2023-07-06
  • C++类与对象及构造函数析构函数基础详解
    目录C++类与对象类的定义对象的创建构造函数和析构函数访问修饰符继承多态成员变量与成员方法总结C++类与对象 C++是一门面向对象的编程语言。在C++中,我们可以利用类来创建对象,...
    99+
    2023-05-16
    C++类对象函数 c++ 构造析构函数
  • C++分析讲解类的静态成员变量是什么
    目录一、成员变量的回顾二、新的需求三、静态成员变量四、小结一、成员变量的回顾 通过对象名能够访问 public 成员变量每个对象的成员变量都是专属的成员变量不能在对象之间共享 二、新...
    99+
    2024-04-02
  • C++类继承时的构造函数实例分析
    这篇“C++类继承时的构造函数实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++类继承时的构造函数实例分析”文章吧...
    99+
    2023-06-29
  • C++函数指针+对象指针+this指针+指向类静态和非静态成员的指针
    目录1、指向函数的指针2、对象指针3、this指针4、指向类的非静态成员的指针5、指向类的静态成员的指针 1、指向函数的指针 函数的代码在内存中的首地址,是由函数名表示的,也就是说函...
    99+
    2024-04-02
  • Kotlin构造函数、成员变量和init代码块执行顺序实例分析
    本文小编为大家详细介绍“Kotlin构造函数、成员变量和init代码块执行顺序实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Kotlin构造函数、成员变量和init代码块执行顺序实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-04
  • C++对象的销毁之析构函数实例分析
    本文小编为大家详细介绍“C++对象的销毁之析构函数实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++对象的销毁之析构函数实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、对象的销毁生活中的对象...
    99+
    2023-06-30
  • javascript构造函数以及原型对象的示例分析
    小编给大家分享一下javascript构造函数以及原型对象的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的。//定义...
    99+
    2024-04-02
  • 把Python嵌入C++中类的成员属性的实例分析
    本篇文章给大家分享的是有关把Python嵌入C++中类的成员属性的实例分析 ,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在C++中类的相关成员能使用关键字去声明为不一样的属性...
    99+
    2023-06-17
  • C++数据结构分析多态的实现与原理及抽象类
    目录多态的概念虚函数多态构成的条件C++11override和final重载、重写和重定义(隐藏)抽象类多态的原理虚函数表原理单继承和多继承的虚表单继承的虚表多继承的虚函数表几个值得...
    99+
    2024-04-02
  • C++构造函数的类型,浅拷贝与深拷贝实例分析
    本文小编为大家详细介绍“C++构造函数的类型,浅拷贝与深拷贝实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++构造函数的类型,浅拷贝与深拷贝实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、无...
    99+
    2023-06-29
  • PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
    PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用 PHP 面向对象1.构造函数2.析构函数3.继承4....
    99+
    2023-09-02
    php 开发语言 java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作