当前位置: 首页 > news >正文

杭州做微信网站软件公司网站怎样盗链图片

杭州做微信网站软件公司,网站怎样盗链图片,软件工程培训,电动门 东莞网站建设类和对象(1) 一、类的相关内容1.访问限定符2.class关键字与struct关键字的区别3.类域 二、this指针三、成员函数存放在哪里?1. 函数的存放位置2. 练习题 一、类的相关内容 1.访问限定符 (1)C⼀种实现封装的⽅式&…

类和对象(1)

  • 一、类的相关内容
    • 1.访问限定符
    • 2.class关键字与struct关键字的区别
    • 3.类域
  • 二、this指针
  • 三、成员函数存放在哪里?
    • 1. 函数的存放位置
    • 2. 练习题

一、类的相关内容

1.访问限定符

(1)C++⼀种实现封装的⽅式,⽤类将对象的属性与⽅法结合在⼀块,让对象更加完善,通过访问权限选择性的将其接⼝提供给外部的⽤⼾使⽤。

(2)public修饰的成员在类外可以直接被访问;protected和private修饰的成员在类外不能直接被访
问,protected和private是⼀样的,以后继承章节才能体现出他们的区别。

(3)访问权限作⽤域从该访问限定符出现的位置开始直到下⼀个访问限定符出现时为⽌,如果后⾯没有访问限定符,作⽤域就到 }即类结束。

(4)class定义成员没有被访问限定符修饰时默认为private,struct默认为public。

(5)⼀般成员变量都会被限制为private/protected,需要给别⼈使⽤的成员函数会放为public。
在这里插入图片描述

2.class关键字与struct关键字的区别

(1)class为定义类的关键字,后面跟类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省
略。类体中内容称为类的成员;类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或
者成员函数。
(2)C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是
struct中可以定义函数。

#include<iostream>
using namespace std;
// C++升级struct升级成了类
// 1、类⾥⾯可以定义函数
// 2、struct名称就可以代表类型
// C++兼容C中struct的⽤法//这是c语言结构体的定义:ListNodeC不能代表类型,要加上struct关键字,除非typedef
typedef struct ListNodeC
{struct ListNodeC* next;int val;
}LTNode;// 不再需要typedef,ListNodeCPP就可以代表类型
struct ListNodeCPP
{void Init(int x){next = nullptr;val = x;}ListNodeCPP* next;int val;
};
int main()
{return 0;
}

3.类域

(1)类定义了⼀个新的作⽤域,类的所有成员都在类的作⽤域中,在类体外定义成员时,需要使⽤ :: 作⽤域操作符指明成员属于哪个类域

(2)类域影响的是编译的查找规则,下⾯程序中Init如果不指定类域Stack,那么编译器就把Init当成全
局函数,那么编译时,找不到array等成员的声明/定义在哪⾥,就会报错。指定类域Stack,就是知
道Init是成员函数,当前域找不到的array等成员,就会到类域中去查找。

#include<iostream>
using namespace std;
class Stack
{
public:
// 成员函数void Init(int n = 4);
private:
// 成员变量int* array;size_t capacity;size_t top;
};
// 声明和定义分离,需要指定类域
void Stack::Init(int n)  //缺省值只能在声明定义
{array = (int*)malloc(sizeof(int) * n);if (nullptr == array){perror("malloc申请空间失败");return;}capacity = n;top = 0;
}
int main()
{Stack st;st.Init();return 0;
}

二、this指针

(1)Date类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,而且成员函数并不属于某一个对象,同类的所有对象共享一份成员函数。那当d1调⽤Init和Print函数时,该函数是如何知道应该访问的是d1对象还是d2对象呢?那么这⾥就要看到C++给了⼀个隐含的this指针解决这⾥的问题。

(2)编译器编译后,类的成员函数默认都会在形参第⼀个位置,增加⼀个当前类类型的指针,叫做this
指针。⽐如Date类的Init的真实原型为, void Init(Date* const this, int year,int month, int day)。

(3)类的成员函数中访问成员变量,本质都是通过this指针访问的,如Init函数中给_year赋值,
this->_year = year。

(4)C++规定不能在实参和形参的位置显⽰的写this指针(编译时编译器会处理),但是可以在函数体内显⽰使⽤this指针。

#include<iostream>
using namespace std;
class Date
{
public:
// void Init(Date* const this, int year, int month, int day)
void Init(int year, int month, int day)
{//注意:this指针只能指向当前对象
// 编译报错:error C2106: “=”: 左操作数必须为左值
// this = nullptr;_year = year;this->_month = month;this->_day = day;
}
void Print()
{cout << _year << "/" << _month << "/" << _day << endl;
}
private:// 这⾥只是声明,没有开空间int _year;int _month;int _day;
};
int main()
{
// Date类实例化出对象d1和d2Date d1;Date d2;
// d1.Init(&d1, 2024, 3, 31);d1.Init(2024, 3, 31);d1.Print();d2.Init(2024, 7, 5);d2.Print();return 0;
}

三、成员函数存放在哪里?

1. 函数的存放位置

  1. 代码段存储:
    无论是全局函数、静态成员函数、const成员函数还是普通成员函数,在编译后都会被放置在代码段中。这是因为函数代码是共享资源,不需要为每个对象实例都复制一份,更不会直接存储在对象的内存布局中。
  2. 对象不存储函数代码:
    当我们创建一个类的对象时,对象本身只包含其数据成员和可能的虚函数表指针(如果类包含虚函数)。成员函数代码并不存储在对象中。
  3. this指针的作用:
    当成员函数被调用时,编译器会自动传递一个指向调用对象的指针,即this指针。这个指针使得成员函数能够访问和修改对象的数据成员。this指针并不是成员函数的存储位置,而是函数访问对象数据成员的桥梁。
  4. 虚函数和虚函数表:
    如果类包含虚函数,编译器会为每个包含虚函数的类生成一个虚函数表(vtable)。虚函数表包含了指向虚函数实现的指针。对象实例中包含一个指向其所属类的虚函数表的指针(vptr)。当通过基类指针或引用调用虚函数时,会根据虚函数表找到正确的函数实现进行调用。(详情看多态一节)。

例如:
在这里插入图片描述
汇编角度:
在这里插入图片描述

2. 练习题

#include<iostream>
using namespace std;
class A
{
public:void Print(){cout << "A::Print()" << endl;}
private:int _a;
};
int main()
{A* p = nullptr;p->Print();return 0;
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://www.yayakq.cn/news/269038/

相关文章:

  • 济南做网站建设公司android开发是做什么的
  • 大同网站建设公司公司做网站服务费怎样做账
  • 北京网站建设公司大全比较好的中文wordpress主题
  • 优秀毕业设计网站设计网页制作与网站管理
  • 南京调查公司网站网站托管服务合同范本
  • 威县建设局网站手机网页制作工具下载
  • 哪个网站的地图可以做分析图h5网站还有哪些
  • 网信办抓好网站建设做类似淘宝网站多少钱
  • 网站怎样做微信公众号济南网站建设公司-远大云.
  • 淄博微信网站制作seo优化实训内容
  • 阿里云可以放几个网站关于网站开发的创业计划书
  • 做网站有什么框架wordpress分享有图片
  • 网店代运营哪家公司好南京seo代理
  • 深圳联雅做网站怎么样app自助平台制作
  • 山东网站建设公司推荐潍坊网站外包
  • 网站如何做定级备案上海外贸网站google建站
  • wordpress搭建下载站公司电商网站开发合同
  • 宿迁企业网站建设做网站设计公司赚钱吗
  • 微信版网站开发网站运行速度慢
  • 没有网站如何做cpa怎样自己做刷赞网站
  • 网站高端网站建设dedecms的网站系统设计结论
  • 福州建网站哪家公司好上海vis设计
  • 网站推广的途径和方法网站换服务器怎么做
  • 富阳有没有做网站的什么是网络营销和技巧
  • 最优惠的郑州网站建设十大暴利行业加盟
  • 企业简介怎么写吸引人seo网站推广专员招聘
  • 上海网站建设 微信开发公司哪家好最近发生的重大新闻事件
  • 优化方案系列丛书seowhy问答
  • 旅游网站管理系统建工网校和建工社是一个吗
  • 网站建设做什么好优质专业建设申报网站