c++构造函数初探

本文详细介绍了C++构造函数的概念及应用,包括无参构造函数、带参数构造函数、复制构造函数等,并提供了子类调用父类构造函数的具体实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++构造函数初探



        C++构造函数的功能是在创建对象时,用给定的值对对象进行初始化。构造函数是成员函数,他有成员函数的共性,他是特使的成员函数,拥有自己的特性:该函数名与类名相同,不指定返回值类型,他有隐含的返回值,该值由系统内部使用。

一、构造函数形式

class Person
{
public:
         Person(){
........   
........
         }         
private:      
         int nage;
}

二、构造函数分类

1、系统默认

class Person
{
public:    
private:      
         int nage;
}

        在类中没有自己定义构造函数的时候,系统会默认调用一个无参构造函数,这个构造函数是一个空函数,相当于:

Person(){
}

2、无参构造函数

class Person
{
public:
         Person(){
nage = 10;   
........
         }         
private:      
        int nage;
........
}

        无参构造函数会在创建对象时,用指定的值对对象的成员变量进行初始化,因为没有参数传入,所以初始化值是在程序设计时就已经确定的,在对象创建时无法改变,灵活性比较差。

3、带参数的构造函数---又称为 重载构造函数

class Person
{
public:
         Person( int  x,........){
nage = x;   
........
          }         
private:      
        int nage;
........
}

        重载构造函数同样是在对象创建时,用传入的指定参数对成员变量进行初始化,这种初始化的方式比较灵活。构造函数可以像普通成员函数一样重载,显而易见构造函数不会局限于一个,当对象在创建时,会根据传入参数的类型,数量,顺序调用匹配的构造函数,对对象成员变量进行初始化。

4、复制构造函数

class Person
{
public:
         Person(Person &x){
this->strname = x.nage;
this->nage = x.nage;
........
         }         
private:      
        int nage;
........
}

复制构造函数是用一个已知的对象来创建一个新对象,新对象和已知对象数据成员的值可以相同,也可以不同的。在没有定义复制构造函数时,系统同样会为类提供一个默认的构造函数,在这种情况下,两个对象的数据成员值完全一样。

复制构造函数在以下三种情况中必须被调用:

a)、明确表示由一个对象来初始化另外一个对象;//Person  per2(per1);

b)、当对象作为函数实参传递给函数形参的时候;  //fun(per);

c)、当一个自动存储类对象作为函数返回值的时候;//return per;


        示例:

#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
string strname;
int nage;
//构造函数
//无参数构造函数
Person(){
} 
//有参构造函数 
Person(string name){
strname = name;
}
Person(string name,int age){
strname = name;
nage = age;
}
//复制构造函数
Person(Person &x){
this->strname = x.strname;
this->nage = x.nage;
}
}
void main(){
Person per;//调用无参构造函数
Person per1("xiaozhang",10);//调用有参构造函数
Person per2(per1);//调用复制构造函数
Person per3 = per2;//调用复制构造函数
}

三、子类显示调用父类构造方法

         示例:

#include <string>
#include <iostream>
using namespace std;
class Person{
public:
string strname;
int nage;
Person(string name, int age):strname(name),nage(age){
// this->strname = name;
// this->nage = age;
}
};
class Student : public Person{
public:
int  nnum;
Student(string name, int age,int num):nnum(num),Person(name,age){
// this->nnum = num;
}
};
void main(){
Student stu("xiaozhang",19,22);
}

        在子类初始化中有两种形式,一种是在子类中直接对每个数据成员赋值(包括继承父类的数据成员),另一种方法是通过在子类的构造方法后面加:父类名(参数表)来调用父类构造方法,从而对子类对象进行初始化。

 
内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、COSO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征技术改进方向;④为企业研发更高效的生物质炉具提供考。 其他说明:该研究通过大量数据分析模拟,揭示了生物质炉具在实际应用中的优点挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值