C++类和对象

类与struct的区别class默认是私有的,使用堆存储,可以被继承。struct是公有的,使用栈存储,不可以选择。堆栈空间有限,对大量逻辑对象创建类好一些。结构表示点,矩,颜色的轻量对象,成本较低表现抽象使用类类型为数据时,结构体较好类成员的访问控制private:只能在类的内部访问,继承后子类不可以访问public:公有在类的外部可以访问(通过对象)protected:只能在...
摘要由CSDN通过智能技术生成

类与struct的区别
class默认是私有的,使用堆存储,可以被继承。struct是公有的,使用栈存储,不可以选择。

堆栈空间有限,对大量逻辑对象创建类好一些。
结构表示点,矩,颜色的轻量对象,成本较低
表现抽象使用类
类型为数据时,结构体较好

类成员的访问控制
private:只能在类的内部访问,继承后子类不可以访问
public:公有在类的外部可以访问(通过对象)
protected:只能在类的内部访问,但是继承后,子类也能使用

对象的构造与析构
1.构造函数(公有的)无返回值 分为有参与无参。函数名与类名一样。初始化类成员
2.析构函数 ~类名()。当类的生命周期结束时,对内存进行清理(扫尾)
3.拷贝构造函数,由一个对象去构造另外一个对象 类名(类名 &对象);使用可以(如有Student类) Student s1; Student s2(s1);构造s2。或者 Student s4 = s1;

深拷贝浅拷贝
区别:当类的数据成员没有涉及到指针时,可以使用默认情况下的浅拷贝。当涉及指针时,使用浅拷贝,出现指针悬挂(当两个对象的数据成员中指针指向同一块内存,在程序运行完毕调用析构函数释放对象1后,另一个对象2数据成员依旧指向这个内存)。

若自己未定义构造函数,析构函数,会自动有构造函数与析构函数,不可以被重载。而一旦自定义了构造函数析构函数,则将不会使用默认的构造析构函数。并且一次构造对于一个析构。

对类的成员初始化。
对象初始化列表
1.当类成员声明为const时候。因为其是一个常量,在定义时候,已经填入垃圾值,不可以通过正常构造函数来修改其中的值。此时使用对象初始化列表。
如在一个类中
const char * s
Student(const char *n, int a) : name(n);

2.类对象作为另外一个类的成员变量需要构造该对象变量的值
Circle(int x, int y, int r) m_p(x, y)

3.子类继承父类的成员变量,并且对其初始化
studen() :persen(“aa”, 22);

类的构造顺序
先构造父类成员,在构造成员,再构造对象本身。

匿名对象

class Test
{
}
Test(2)
定义一个匿名对象,生存周期只存在这一行。
也可以在构造函数中调用构造函数产生匿名对象

new/delete
malloc/free
上者开辟和释放空间还可以构造对象。而下者是开辟和释放空间。

C++static关键字
新特性
1.修饰成员变量->静态成员变量,在类的外部初始化,多个对象共享同一静态成员变量,父子类共享静态成员变量
2.修饰成员函数->静态成员函数,可通过类名来访问,静态成员函数只能使用静态成员变量,没有this指针。

Const
1.修饰成员变量。使用对象初始化列表进行初始化
2.修饰成员函数 void show() const 只能访问数据,不可修改,也不可以调用非const成员函数
3.修饰对象。常对象。

friend
声明友元函数友元类。友元类不可以被继承,关系不具有传递性。声明友元函数,可以通过对象引用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值