认识一下C++ 《构造函数》

1、当创建一个对象时,往往需要做一些初始化工作,例如对数据成员赋值等?怎么办?
答:为了解决这个问题,C++提供了构造函数。

构造函数(Constructor)是一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户调用(用户也不能调用),而是在创建对象时自动执行。构造函数的作用是在创建对象时进行初始化工作,最常见的就是对成员变量赋值。

#include <iostream>
using namespace std;

class Student{
private:
char *name;
int age;
float score;

public:
//声明构造函数
Student(char *, int, float);
//声明普通成员函数
void say();
};

//定义构造函数
Student::Student(char *name1, int age1, float score1){
name = name1;
age = age1;
score = score1;
}
//定义普通成员函数
void Student::say(){
cout<<name<<"的年龄是 "<<age<<",成绩是 "    <<score<<endl;
}

int main(){
//根据构造函数创建对象
Student stu("小明", 15, 90.5f); //传参形式类似于函数调用
stu.say();

return 0;
}

在类中我们定义了一个构造函数 Student(),它的作用是给3个 private 属性的成员变量赋值。在 main 函数中,我们根据构造函数创建了一个对象 stu;因为构造函数有参数,所以创建对象时要相应地传入实参,形式类似于函数调用。

需注意:

1、一旦在类中定义了构造函数,那么创建对象时一定会被执行;
2、如果构造函数有参数,创建对象时就要传参。

****作用:****

构造函数主要用来进行初始化,没有返回值(有返回值没有任何意义)。

  • 不管是声明还是定义,函数名前面都不能出现返回值类型,即使是 void 也不允许;
  • 函数体中不能有 return 语句。

默认构造函数

如果用户自己没有定义构造函数,那么编译器会自动生成一个默认的构造函数,只是这个构造函数的函数体是空的,也没有参数,不执行任何操作。
比如上面的 Student 类,默认生成的构造函数如下:

Student(){}

一个类,必须有构造函数,要么用户自己定义,要么编译器自动生成.

实际上,编译器只有在必要的时候才会生成默认构造函数,而且它的函数体一般不为空。默认构造函数的目的是帮助编译器做初始化工作,而不是帮助程序员。这是C++的内部实现机制,这里不再深究,可以按照上面说的“一定有一个空函数体的默认构造函数”来理解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,533评论 1 51
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,833评论 0 3
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,252评论 9 118
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 青春是一首美丽的诗 五彩缤纷,绚丽多彩 朋友是一首贴心的诗 知情冷暖,相伴左右 恋人是一首浪漫的诗 心心相吸,甜蜜...
    愉诗语阅读 295评论 0 1