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

IIS自己做的网站 无法访问数据库怎么查百度竞价关键词价格

IIS自己做的网站 无法访问数据库,怎么查百度竞价关键词价格,wordpress媒体库相册,乐清建设路小学网站1. 类 我们之前提及过C语言是面向过程的语言,其解决问题的方式是关注问题过程,然后逐步解决。而C是面向对象编程,聚焦于对象,依靠多个对象之间的交互关系解决问题。而类这个概念的引入则是面向对象的最深刻体现。 1.1 C中的结构体…

1. 类

        我们之前提及过C语言是面向过程的语言,其解决问题的方式是关注问题过程,然后逐步解决。而C++是面向对象编程,聚焦于对象,依靠多个对象之间的交互关系解决问题。而类这个概念的引入则是面向对象的最深刻体现。

1.1 C++中的结构体

        C++兼容C,所以C++的结构体完全涵盖了C语言中结构体的语法形式。除此之外,C++结构体也做出了一些改进,如定义结构体变量不再一定需要struct关键字,不过最大的变化还是体现在结构体内可以定义函数了。

        在结构体内定义的函数可以直接使用结构体中的成员变量,在调用成员函数时可以直接使用成员访问的方式就行调用,函数中的成员变量则会自动被替换为调用结构体变量对应的结构体变量。

struct Stack {//C++的结构体内既可以定义变量,也可以定义函数//变量int* _arr;int _capacity;int _top;//函数void Init(int capacity = 4){_arr = (int*)malloc(sizeof(int) * capacity);if (_arr == nullptr){perror("malloc fail");return;}_capacity = capacity;_top = 0;}
};
int main()
{//定义结构体变量可以不加structstruct Stack st1;Stack st2;//调用成员函数st1.Init();st2.Init(8);
}

        需要注意的是成员变量的命名,尽量加入一些标识使得可以很容易分辨出是一个成员变量,以防在成员函数中调用产生分不清的情况。类的成员变量命名也要注意这一点。 

1.2 C++的类

        但是在C++中我们一般使用类来替代结构体,类的关键字为class。

1.2.1 类的定义

1.2.1.1 声明和定义全部放在类体中

        声明和定义同时放在类体中,这种方式比较简便,就像C语言阶段的声明定义不分离一样。

class Date
{int _year;int _month;int _day;void Show(){cout << _year << '-' << _month << '-' << _day << endl;}
};
1.2.1.2 声明放在类的头文件,定义放在类的实现文件

        这种方法类似于C语言中的声明和变量分离,比较规整并且便于合作开发。

        这种方法需要注意类的作用域,即需要 类名::成员名 来指明成员所属的类域。

date.h

#pragma once
class Date
{int _year;int _month;int _day;void Show();
};

date.cpp

#include"date.h"
void Date::Show()
{cout << _year << '-' << _month << '-' << _day << endl;
}

1.2.2 类的访问限定符

1.2.2.1 封装

        面向对象有三大特性:封装、继承、多态。

        封装指的是将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。在C++中可以借助访问限定符,来控制哪些成员或方法可以在类外部使用,从而实现封装的特性。

1.2.2.2 访问限定符

        C++的访问限定符有三个:public(公有),protected(保护),private(私有)。这三个访问限定符只有public修饰的成员支持在类外被访问,而protected和private是不可以的。

        访问限定符在C++中的形式是访问限定符带一个冒号。其限定范围是自符号起到下一个访问限定符或类结束为止。

        class成员的默认访问权限是private,struct成员的默认访问权限是public。

struct Stack {int* _arr;int _capacity;int _top;void Init(int capacity = 4){_arr = (int*)malloc(sizeof(int) * capacity);if (_arr == nullptr){perror("malloc fail");return;}_capacity = capacity;_top = 0;}
private:void Show(){}
};
class Date
{int _year;int _month;int _day;public:void Init(int year = 2000, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void Show(){cout << _year << '-' << _month << '-' << _day << endl;}
};int main()
{struct Stack st1;//struct默认访问权限是publicst1.Init();int a = st1._capacity;//st1.Show();//errorDate d1;//class默认访问权限是private//d1._year = 2024; //errord1.Init();d1.Show(); 
}

1.2.3 类的实例化

        类和结构体在一定程度上是相似的。在定义结构体或类的时候只是限定了有哪些成员,类似于给出图纸,但此时并没有在内存中分配空间。直到我们创建结构体变量或类对象,这时候才会在内存中开辟空间,我们才能正常访问使用。这一步就叫做类的实例化。

class Date
{int _year;int _month;int _day;public:void Init(int year = 2000, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void Show(){cout << _year << '-' << _month << '-' << _day << endl;}
};int main()
{//Date.Init(); //error 没有实例化Date d1;d1.Init();
}

1.2.4 类的大小

        类的大小计算方式与结构体相同。类中的成员函数不会存放在对象开辟的空间中,而是统一放在代码段中。所以类的大小只与成员变量有关而与成员函数无关。当类中没有成员函数时,编译器中会为这个空类对象分配一个字节的空间作为占位。

class C1
{int a;char c;double d;void func(){}
};
class C2
{void func(){}
};
class C3
{};int main()
{cout << sizeof(C1) << endl; //16cout << sizeof(C2) << endl; //1cout << sizeof(C3) << endl; //1
}

1.3 this指针

        在了解了这么多后有一个问题,在调用成员函数时,我们并没有传递对象的相关信息,函数凭什么知道我们调用的对象是d1而不是d2呢?这是因为this指针发挥了作用。

        在C++中,编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数这也就是我们所要介绍的this指针。函数调用时,this指针会指向当前对象(函数运行时调用该函数的对象),在函数体中所有“成员变量” 的操作,都是通过this指针去访问的。只不过所有的操作对用户是透明的,即用户不需要来传递,由编译器自动完成。

        我们可以通过观察汇编代码发现这个隐藏的this指针传参。

class Date
{int _year;int _month;int _day;public://void Init(Date* const this, int year = 2000, int month = 1, int day = 1)void Init(int year = 2000, int month = 1, int day = 1)	{this->_year = year;_month = month;_day = day;}//void Show(Date* const this)void Show(){cout << _year << '-' << _month << '-' << _day << endl;}
};
int main()
{Date d1;d1.Init(2024, 2, 25);d1.Show();
}

        我们对this指针进行总结:

①this指针的类型是 类类型* const,这说明在函数成员内不可以修改this,但是修改通过this解引用的值。

②this指针只能在成员函数内使用。

③对象中并不储存this指针,在成员函数调用时将对象的地址作为实参传递给成员函数的this形参。

④this指针真实存在,但是传参是由编译器自动完成的,我们不可以在实参和形参位置显式写出this指针的传递。

⑤我们可以在成员函数内部使用this指针。this作为参数,存储在栈中。

class C
{
public:int _a;void func(){cout << "func()" << endl; //没有使用this指针,所以没有空指针解引用,不报错//cout << _a << endl; //error 实际上是this->_a,this是空指针,所以报错}
};
int main()
{C c1;C* pc = nullptr;pc->func(); //-> 不解引用,而是将pc作为参数传给this,this接收参数,值为nullptr(*pc).func(); //. 不解引用,也是将pc传给this指针,this接收参数,值为nullptr
}

        在成员函数调用时,->或.两个操作符并不进行解引用,而是表示将传给this指针的对象是谁,所以在主函数中并未报错,在成员函数中访问成员变量时才会对this解引用。

http://www.zhongyajixie.com/news/35384.html

相关文章:

  • 做网站的备案资料外链是什么
  • 用手机做网站服务器新东方教育机构官网
  • 网站建设属于软件开发列举常见的网络营销工具
  • 购买网站建设需要注意google怎么推广
  • 公司官网网站搭建seo推广系统
  • 河南手机网站建设价格明细表国内广告投放平台
  • 外贸开源网站域名批量注册查询
  • 江阴建设网站百度上传自己个人简介
  • 外国网站 dns解析失败西安网站制作费用
  • wordpress 汉化插件广州抖音seo公司
  • 如何做滴滴网站平台网络服务提供者知道或者应当知道
  • 怎么做淘宝客优惠劵网站百度推广400客服电话
  • 企业官网建站联系我们最近疫情最新消息
  • 做单页网站盈利案例内部优化
  • wordpress 首页模板资源优化排名网站
  • 做网站要的带宽是什么广州网页搜索排名提升
  • 手机网站免费建设扬州百度seo公司
  • ngrok做网站服务器百度怎么发广告
  • 品牌网站建设公司陕西seo排名
  • 深圳疫情最新情况龙华区什么是seo搜索优化
  • 武汉网站制作公司选华企加速器北京网站托管
  • 软件定制开发如何做优化seo方案
  • 网站建设客网站免费网络推广工具
  • 网站前端制作费用百度一下你就知道123
  • 个人网站 可以自己做服务器合肥网站优化公司
  • 赣州 做网站360建站系统
  • 哪里有好的免费的网站建设谷歌浏览器 安卓下载
  • 网站建设公司违法成都网站seo技术
  • 网站建设制作需要多少钱网络营销与电子商务的区别
  • 做视频网站怎么挣钱吗注册域名后如何建立网站