C++程序设计基础一周目第七天

昨天看了类,没总结,今天补一下。

1.类也是一种数据类型,我理解为多了成员函数的结构,是封装的基础,其内存大小同没有函数的结构,函数不占内存空间(应该是另外一片空间)。

2.不声明是公有保护还是私有成员的默认为私有。

3.成员函数一般分为两类,一类负责消息传递,一般暴露在公有成员中,另外一类操作数据成员,一般为私有或保护。

4.this指针不能显示说明,只能在非静态的成员函数中使用,在开始调用this时声明它指向当前的对象,直至函数结束时都不会改变指向,是常指针const。

5.构造函数和析构函数,构造函数在类创建时调用,一般用于初始化类的成员和申请内存空间,可重载,可带参数,不可有返回值;析构函数在类被删除时(可能是调用delete显示删除,也可能是函数结束时隐式删除)

6.复制构造函数

一般就是,类里添加一个变量为本类类型的别名的构造函数A(const A &p),大概就这样,然后在里面将数据复制,深复制还要申请新的内存空间,在‘=’和A a;A b(a);这两种情况时就会调用复制构造函数。这里要说一下别名形参,书上有个有趣的说法,说调用复制构造函数时会生成匿名对象p,这无疑就是你tm在逗我,别名形参其实就是直接操作实参,只不过加个马甲而已,不会生成新对象和新内存空间,书上的test结果难道是脑部出来的吗Orz...

class A
{
public:
	A(int xx = 0, int yy = 0)
	{
		X = xx;
		Y = yy;
		cout << "a" << endl;
	}
	A(const A & p)
	{
		X = p.X;
		Y = p.Y;
		cout << "copy" << endl;
	}
	~A()
	{
		cout << "b" << endl;
	}
private:
	int X, Y;
};
A g()
{
	A a(1, 2);
	return a;
}
void main()
{
	A b;
	b = g();
	system("pause");
}
结果如下:
a               //创建对象b
a               //创建对象a
copy          //执行复制构造函数
b               //删除对象a
b               //删除对象b
7.类的常成员
常数据成员,初始化
class A
{
     public:
          const int a,b;
          A():a(10),b(10){};   //a括号里的不一定是具体数值,也可以是外部决定的,通过构造函数传入
};
常成员函数,const限制了该函数的this指针,也就是说它不能修改类的数据成员
8.静态成员,可以用A::a、A::a()来初始化和调用
9.友元,可以是类,也可以是函数,只是把类本身暴露给友元,但友元并不属于类,与类的关系只是可调用,友元关系是非对称的,不可传递的,友元类一般用于消息传递
10.类的包含,要注意的是什么时候创建什么时候delete就好了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值