我是靠谱客的博主 踏实凉面,最近开发中收集的这篇文章主要介绍C++——构造函数(定义以及调用构造函数的过程),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

一、构造函数 

 二、调用构造函数(重点)

三、组合

四、类成员初始化的困惑——冒号语法——成员初始化列表

一、构造函数 

1.定义对象的时候,自动调用当前类的构造函数
   如果程序员没有定义构造函数,则类会提供一个默认的构造函数,给类中的数据成员分配空间。(分配的是栈上的空间)
2.构造的特殊的成员函数,函数名和类名相同,无返回类型,可以带参数(说明构造函数可以重载)
<<能带参数说明可以构成重载<<

#include<iostream>
using namespace std;
class Table
{
public:
void Set();
void Print();
private:
int m_length;
int m_width;
int m_height;
};
void Table::Set()
{
m_length = 120;
m_width = 40;
m_height = 80;
}
void Table::Print() {
cout << m_length << " " << m_width << " " << m_height << endl;
}
//Person p;
int main()
{
Table t;
//t.Set();
t.Print();
}

 二、调用构造函数(重点)

遇到对象,要自动调用当前类的构造函数,调用构造函数的步骤:
(1)传参
(2)根据数据成员在类中的声明顺序,用冒号语法后面的值进行初始化
(3)执行构造函数函数体

初始化:在声明的时候直接给值;
赋初值:赋一个值。

class Table
{
public:
//①默认构造函数无参
/*Table()
{
}
*/
//Table(int l, int w, int h)//②不存在默认构造函数
Table(int l = 120,int w=40,int h=80)
{
m_length = l;
m_width = w;
m_height = h;
cout << "Table" << endl;
}
void Print()
{
cout << m_length << " " << m_width << " " << m_height << endl;
}
private:
int m_length;
int m_width;
int m_height;
};
int main()
{
Table t;//定义对象——自动调用Table的构造函数
t.Print();
Table t1(60);
t1.Print();
Table t2(180,50);
t2.Print();//调匹配的构造函数
Table tt[5];//定义一个对象数组 tt[0]~tt[4]
//cout << "main" << endl;
Table* p=&t;//定义一个指针变量,p不是对象,只是可以指向Table类型的变量,没有定义Table的对象。但不会调用构造函数
p->Print();//
}

三、组合

强拥有,一个类的对象作为另外一个类的数据成员——整体和部分的关系

例子:CPU类、鼠标类、键盘类的对象作为电脑类的数据成员。

class CPU
{
public:
CPU()
{
cout << "CPU" << endl;
}
};
class Mouse
{
public:
Mouse()
{
cout << "Mouse" << endl;
}
};
class KeyBoard
{
public:
KeyBoard()
{
cout << "KeyBoard" << endl;
}
};
class Computer
{
public:
Computer()
{
cout << "Computer" << endl;
}
private:
CPU cpu;
Mouse ms;
KeyBoard kb;
};
int main()
{
Computer c;
}

四、类成员初始化的困惑

冒号语法(也称成员初始化列表)

最后

以上就是踏实凉面为你收集整理的C++——构造函数(定义以及调用构造函数的过程)的全部内容,希望文章能够帮你解决C++——构造函数(定义以及调用构造函数的过程)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部