概述
1.类的空间大小4b。
2.在类的内部声明,外部定义时需要加作用域
public:
void setNum(int data);
int getNum(void);
};
void Data::setNum(int data)
{
num = data;
}
int Data::getNum()
{
return num;
}
3.构造和析构函数
构造函数和析构函数,这两个函数将会被编译器自动调用,构造函数完成对象的初始化动作,析构函数在对象结束的时候完成清理工作。
注意:对象的初始化和清理工作是编译器强制我们要做的事情,即使你不提供初始化操作和清理操作,编译器也会给你增加默认的操作,只是这个默认初始化操作不会做任何事。
构造函数:实例化对象的时候系统自动调用
析构函数:对象释放的时候系统自动调用
构造函数语法:
构造函数函数名和类名相同,没有返回类型,连void都不可以,但可以有参数,可以重载
析构函数语法:
析构函数函数名是在类名前面加”~”组成,没有返回类型,连void都不可以,不能有参数,不能重载
4.构造函数的分类及提调用
构造函数分类:
按参数类型:分为无参构造函数和有参构造函数
按类型分类:普通构造函数和拷贝构造函数(复制构造函数)
调用案例:
class data
{
public:
int num;
public:
data()
{
num=0;
cout<<“无参的构造函数num=”<<num<<endl;
}
data(int n)
{
num=n;
cout<<“有参的构造函数num=”<<num<<endl;
}
~data()
{
cout<<“析构函数num=”<<num<<endl;
}
};
void test01()
{
data ob1;
data ob2=data();
data ob3(10);
data ob4=data(20);
data ob5=30;
data(40);
cout<<"-----"<<endl;
}
注意:在同一作用域,构造和析构的顺序相反。
5.拷贝构造函数
调用拷贝构造函数(如果用户 不实现拷贝构造 系统将调用默认的拷贝构造。
默认的拷贝构造:单纯的整体赋值(浅拷贝)。
如果用户实现了 拷贝构造 系统将调用用户实现的拷贝构造。
注意:(1)不能调用拷贝构造函数去初始化匿名对象
(2)对象作为函数的参数 如果实参与形参 都是普通对象 那么就会 调用拷贝构造
(3)函数返回局部对象 在qt中会被优化 从而调用不了拷贝构造
6.构造函数的调用规则
系统会对任何一个类提供3个函数成员函数
(1)如果用户提供了有参构造 将屏蔽 系统的默认构造函数。
(2)如果用户提供了有参构造 不会屏蔽 系统的默认拷贝构造函数。
(3)如果用户提供了拷贝构造函数 将屏蔽 系统的默认构造函数、默认拷贝构造函数。
疑问?:深拷贝和浅拷贝
7.explicit关键字
C++提供了关键字explicit,禁止通过构造函数进行的隐式转换。声明为explicit的构造函数不能在隐式转换中使用
最后
以上就是怕黑天空为你收集整理的学习c++的每日分享的全部内容,希望文章能够帮你解决学习c++的每日分享所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复