2018/4/8
C++
1.C++对象内存分配机制
当程序运行到对象定义的时候,系统为对象开辟存储空间,存放各自的变量值,所需内存空间为该对象中成员中内存字节的总和
所有的对象共享同一个启动函数代码
2.构造函数
1.简单介绍:
1.构造函数就是对类初始化的一种方式,采用构造器可以初始化默认值
2.构造函数的类名为函数名
3.构造函数无返回类型
4.访问级别为public
public:
text1(int a, int b)
{
cout << "启动构造器" << endl;
num1 = a;
num2 = b;
cout << "构造函数实现完毕" << endl;
}
注:构造函数分有参数型和无参数型,如未定义构造函数,系统自定义一个无参构造
3.析构函数
1.简单介绍:析构函数是对构造函数的处理机制,清空内存;
2.多用于构造对象为指针对象型,采用delete释放内存
~text1()//开启析构器,其实析构器在指针中采用delete操作
{
cout << "启动析构器" << endl;
cout << "表面删除" << endl;
cout << "关闭析构器" << endl;
}
4.函数的二义性
1.在声明一个类时,系统会给一个默认构造函数,在对类成员进行初始化时,对类的带参构造进行重载,如果未给带参构造进行参数赋值,会产生二义性错误
解决方法之一:屏蔽默认构造
/*text1()//函数自动调用,为了解决二义性而屏蔽
{
cout << "启动无参构造器" << endl;
}*/
5.注:
在使用private优先级的时候,不能直接对函数内部成员变量进行使用,要采用调用内部函数的方式
//对于构造器和析构器的使用
#include<iostream>
using namespace std;
class text1
{
public:
text1(int a, int b)
{
cout << "启动构造器" << endl;
num1 = a;
num2 = b;
cout << "构造函数实现完毕" << endl;
}
~text1()//开启析构器,其实析构器在指针中采用delete操作
{
cout << "启动析构器" << endl;
cout << "表面删除" << endl;
cout << "关闭析构器" << endl;
}
int get_num1()
{
return num1;
}
int get_num2()
{
return num2;
}
//注:使用访问级为private时,需要采用类内部的函数来调用成员变量
private:
int num1, num2;
/*text1()//函数自动调用
{
cout << "启动无参构造器" << endl;
}*/
};
void main()
{
text1 t1(10, 20);
cout << t1.get_num1() << endl;;
cout << t1.get_num2() << endl;;
t1.~text1();
system("pause");
}