c++中如何使用构造函数
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇文章为大家展示了c++中如何使用构造函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、构造函数:1、什么是构造函数?关于这个构造函数,简单理解就是在一
千家信息网最后更新 2025年02月01日c++中如何使用构造函数
本篇文章为大家展示了c++中如何使用构造函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
一、构造函数:
1、什么是构造函数?
关于这个构造函数,简单理解就是在一个类中,有一个函数,它的函数名称和类名同名,而且这个构造函数没有返回值类型的说法( Test()这个函数就是构造函数了。):
#include
class Test:
{
public:
Test()
{
printf("Test()\n");
}
}
2、构造函数调用:
(1)一般情况下,构造函数在定义时自动被调用(主要作用就是自动去初始化类中的属性,这个属性通俗一点来说,就是我们所说的变量。而且这里的自动的意思,就是说当你创建了一个对象后,它就会自动调用构造函数,不用你再去main函数里面写构造函数了。):
#include
class Test
{
public:
Test()
{
printf("Test()\n");
}
};
int main()
{
Test t; // 调用 Test()
return 0;
}
演示结果如下:
root@txp-virtual-machine:/home/txp/c++# ./a.out
Test()
(2)一些特殊情况下,需要手工来调用构造函数(这个在下面带参数的构造函数里面会有一个案例分析)
二、带参数的构造函数:
(1)构造函数可以根据需要定义参数。
class Test
{
public:
Test(int v)
{
}
};
(2)一个类中可以存在多个重载的构造函数(什么重载函数,简单来说,可以同函数名,但是它的传参类型或者返回类型不同就是重载函数了。)下面来看一个具体带参构造函数案例:
#include
class Test
{
private:
int m_value;
public:
Test()
{
printf("Test()\n");
m_value = 0;
}
Test(int v)
{
printf("Test(int v), v = %d\n", v);
m_value = v;
}
int getValue()
{
return m_value;
}
};
int main()
{
Test ta[3] = {Test(), Test(1), Test(2)};
for(int i=0; i<3; i++)
{
printf("ta[%d].getValue() = %d\n", i , ta[i].getValue());
}
Test t = Test(100);
printf("t.getValue() = %d\n", t.getValue());
return 0;
}
演示结果如下:
root@txp-virtual-machine:/home/txp/c++# ./a.out
Test()
Test(int v), v = 1
Test(int v), v = 2
ta[0].getValue() = 0
ta[1].getValue() = 1
ta[2].getValue() = 2
Test(int v), v = 100
t.getValue() = 100
三、实战案例:
需求:开发一个数组类解决原生数组的安全性问题:
--提供函数获取数组长度
--提供函数获取数组元素
--提供函数设置数组元素
接下来我们先来写头文件IntArray.h,数组类就包含在里面:
#ifndef _INTARRAY_H_
#define _INTARRAY_H_
class IntArray
{
private:
int m_length;
int* m_pointer;
public:
IntArray(int len);
int length();
bool get(int index, int& value);
bool set(int index ,int value);
void free();
};
#endif
然后接下来写IntArray.cpp,也就是类的方法具体实现了:
#include "IntArray.h"
IntArray::IntArray(int len)
{
m_pointer = new int[len];
for(int i=0; i {
m_pointer[i] = 0;
}
m_length = len;
}
int IntArray::length()
{
return m_length;
}
bool IntArray::get(int index, int& value)
{
bool ret = (0 <= index) && (index < length());
if( ret )
{
value = m_pointer[index];
}
return ret;
}
bool IntArray::set(int index, int value)
{
bool ret = (0 <= index) && (index < length());
if( ret )
{
m_pointer[index] = value;
}
return ret;
}
void IntArray::free()
{
delete[]m_pointer;
}
最后就在main中来创建对象,来实现所需功能:
#include
#include "IntArray.h"
int main()
{
IntArray a(5);
for(int i=0; i {
a.set(i, i + 1);
}
for(int i=0; i {
int value = 0;
if( a.get(i, value) )
{
printf("a[%d] = %d\n", i, value);
}
}
a.free();
return 0;
}
最终演示结果:
root@txp-virtual-machine:/home/txp/c++# ./a.out
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
小结:
--构造函数可以根据需要定义参数
--构造函数之间可以存在重载关系
--构造函数遵循C++中重载函数的规则
--对象定义时会触发构造函数的调用
--在一些情况下可以手动调用构造函数
上述内容就是c++中如何使用构造函数,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
函数
就是
数组
参数
对象
情况
案例
类型
结果
演示
c++
接下来
元素
内容
属性
技能
知识
不同
特殊
简明
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北京紫蜂互联网科技
系统软件开发的主要语言
软件工程考研网络安全考研
服务器小霸王
服务器集成项目利润
软件开发类招标文件单一来源
网络安全隐患清除
耿成山服务器
linux 服务器 配置
张店计划软件开发公司
软件开发实习能力
新技术的应用对网络安全的影响
dell服务器光碟安装驱动
现金贷业务软件开发
网络安全迫
sql取两个表相同的数据库
网络安全的手抄报内容六年级
git协议 服务器
三元达网络技术有限公司
绥中软件开发文档
重庆忠县生鲜专用软件开发
教育管理统计服务器未开启
西安一码通大数据库的电话多少
物流中心网络安全指导
数据库测序
两个不同数据库同步
兰州有软件开发公司
数据库管理及
网络安全盾 网站
键值数据库列表