C++类和对象

sizeof (A) = 1;

p->Print()只是传了一个 A 类型的 this 指针访问的是公共区域的 Print() 函数,并没有用 this 解引用,所以左边程序正常运行,而右边通过 this 指针解引用访问了私有成员 a 而 this (也就是传进来的 p ) 为 nullptr ,解引用会崩溃,所以右边程序运行崩溃。

 构造函数

d1是默认构造不带函数参数的调用 后面不能带()

d2是默认构造带函数参数的调用 [ 可支持重载 ]

 

B A D C 

1、类的析构函数调用一般按照构造函数调用的相反顺序进行调用,但是要注意static对象的存在, 因为static改变了对象的生存作用域,需要等待程序结束时才会析构释放对象

   2、全局对象先于局部对象进行构造

   3、局部对象按照出现的顺序进行构造,无论是否为static

   4、所以构造的顺序为 C A B D

   5、析构的顺序按照构造的相反顺序析构,只需注意static改变对象的生存作用域之后,会放在局部 对象之后进行析构

   6、全局变量最后析构

拷贝构造函数

date d1;

拷贝构造:date d2 (d1) or date d2 = d1 ;

 深拷贝与浅拷贝(值拷贝)

浅拷贝:按字节拷贝

 对于特殊类用深拷贝:

初始化列表: 

 

 在类外进行定义:int A  : : _scount = 1 ;

 

 这两行代码等价

A a(1,2);
st.push(a);

st.push({1,2})

隐式类型转换不仅支持单参数构造,还有多参数; 

类成员函数没有 this 只能访问静态成员 

class A
{
public:
    static int func()
    {
       return _a;//错误
       return _b;//正确
    }
private:
int _a;
static int _b;
}
int A:: _b = 1;//正确
static int A::_b = 1;//错误

内部类

里面的类可以访问外面的类;

友元类

class A 
{
    friend class B
}

B可以访问A的私有成员

连续拷贝构造,编译器的优化

 不优化的情景

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值