C++复习(二)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++复习(二),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3368字,纯文字阅读大概需要5分钟。
内容图文
![C++复习(二)](/upload/InfoBanner/zyjiaocheng/618/e60104c9e11540b4a3c55a3758df04e6.jpg)
C++复习(二)
一、 类和对象
- 类:用来描述一类事物的属性和行为的构造数据类型(自定义的数据类型),和结构体类似
class Box
{
public:
//成员变量
double length; // 盒子的长度
double breadth; // 盒子的宽度
double height; // 盒子的高度
//成员函数
double getVolume(void)
{
return length * breadth * height;
}
}; //关键字 public 确定了类成员的访问属性
- 对象:类这种数据类型定义的变量(类名 变量名;)
Box Box1; // 声明 Box1,类型为 Box(Box1就是对象)
Box Box2; // 声明 Box2,类型为 Box
//对象 Box1 和 Box2 都有它们各自的数据成员
- 访问限定符:
3.1 public(公有):类中可访问,该类对象也可访问。
3.2 protected(保护):类中可访问,该类对象不可访问。
3.3 private(私有):类中成员函数、友元函数访问,该类对象不可访问。(这个成员函数访问私有成员貌似是接口,挖坑+1)
public:在类内和类外都可以进行访问
Private/protected:只能在类内部进行访问
问题1:c语言中的结构体和c++中的结构体的区别?
1、c语言中的结构体不能定义函数,但c++的结构体可以定义函数
2、c语言中的结构体中没有访问限定符,但c++的结构体有访问限定符
问题2:c++中类和结构体有什么区别?
类的默认的访问限定符是private,而结构体默认的访问限定符是public
二、 This指针
要访问类中的成员,有且只能通过对象访问。
this:指向当前正在调用成员函数的类对象,且通过它可以访问当前对象的所有成员(有点拗口,多读两遍,其意自现)
使用 this 的一个完整示例
this这也挖个坑吧+1
三、 构造函数
1. 构造函数作用:初始化类对象成员变量
/*2. 什么时候用构造函数:
用类创建对象时,系统自动调用对应构造函数
实例化对象时自动调用*/
Machine(string _brand, float _weight,int _price,string _color)
{
cout << "构造函数" << endl;
brand = _brand;
weight = _weight;
price = _price;
color = _color;
}
Machine m1(“美的”,7.5,1230,“天蓝色”);
- 什么是构造函数的定义:
(1) 函数名与类名相同
(2) 无返回值
(3) 类成员函数
(4) 对参数无要求
(5) 可以重载
- 构造函数有哪些类型:
4.1 普通构造函数:
4.1.1 无参构造函数
4.1.2 有参构造函数
4.1.3 有默认参数构造函数
#include<iostream>
using namespace std;
class Machine
{
public:
//无参构造函数
//有参构造函数
//有默认参数构造函数
private:
int lev;
}
int main()
{
}
//假装附加了代码
4.2 默认构造函数
没有自定义构造函数时,系统提供的构造函数
自定义的无参构造函数
自定义的有参,但是所有参数都有默认值的构造函数
注意:一个类中有且只能有一个默认构造函数
4.3 限制构造函数
4.4 拷贝构造函数
四、 拷贝构造函数:深拷贝和浅拷贝
通过一个已有的对象,给新实例化的对象初始化
//如果没有自定义拷贝构造函数,系统会提供
//如果自定义了拷贝构造函数,系统就不提供了
washMachine(const washMachine &machine)
{
cout << "拷贝构造函数" << endl;
brand = machine.brand;
weight = machine.weight;
price = machine.price;
color = machine.color;
}
自定义拷贝函数可以有效防护之delete引发的操作内控出错的情况(俗称段错误)
4.1 深拷贝:自定义的拷贝构造函数
4.2 浅拷贝:系统提供的拷贝
拷贝函数定义:
1、函数名必须和类名相同
2、没有返回值
3、参数必须是const修饰的对象的引用
//深拷贝构造函数
Demo(const Demo &demo)
{
cout << "拷贝构造函数" << endl;
a = demo.a;
b = demo.b;
//p = demo.p; // 浅拷贝
p = new int[a];
memcpy(p, demo.p, sizeof(int)*a);
}
五、 析构函数
当实例化对象时,系统会自动调用构造函数对类中成员变量进行初始化,当对象生命周期结束时(第一次以这种方式接触到“生命周期”这个名词),系统会调用析构函数释放堆区申请的空间。如果没有定义,系统会提供,如果定义了,系统就不提供了
析构函数的定义:
1、函数名是~类名
2、没有参数
3、没有返回值
4、不能重载
~Demo()
{
cout << "析构函数" << endl;
delete[]p;
}
内容总结
以上是互联网集市为您收集整理的C++复习(二)全部内容,希望文章能够帮你解决C++复习(二)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。