c++中如何使用构造函数
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇文章为大家展示了c++中如何使用构造函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、构造函数:1、什么是构造函数?关于这个构造函数,简单理解就是在一
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
中国网络安全市场销量第一
云服务器做vpn服务器
软件开发中e-r图在哪一步
服务器连接mysql第一次成功
网络安全不足之处
服务器进入系统提示异常
网络安全法实施作用
浏览器用流量打开服务器异常
html数据库怎么换行
饥荒服务器怎么加管理员
手机版神武老是服务器超时
搭建数据中台 数据库选择
临沂网络安全保障支队
网络安全法》系列解读
数据库不能查中文版
邮箱域名和服务器区别
路尼亚战记哪个服务器可以玩
广东汕尾服务器回收
软件开发和芯片破解有有什么区别
中国网络安全厂商崛起
国家审计署网络安全检查
网络安全协议综合教程
2008免安装数据库
数据库快速搜索图片
软件开发工资发放数据流程图
互联网科技公司增值税税率
倩女幽魂九天梦服务器
5g网络技术苹果
ntc软件开发考什么
安徽互联网软件开发