C++笔记(2)

 
1.       函数返回一个对象时候发生的时候,发生了什么?
Class X
X f(){
        X a(15);
        Return a;
}
= è (一种方式而已)
Class X;
Void f(X&result)
{
        X a(15);
        Result.X::X(a);
        Return;
}
2.       函数返回class object 时的优化:
class X;
X f(const X& t1,const X& t2){
X x;                       //产生一个临时对象
x = t1+t2;                      //赋值构造函数
return x;                 // 以临时对象作为值运行拷贝构造函数
}
 
X f(const X& t1,const X& t2){
return X(t1+t2);      //直接以Tt1+t2为值调用拷贝构造函数,无需一次拷贝
}
9           什么时候必须提供显示的拷贝构造函数?
类中存在指针或者引用的时候最好提供显示的构造函数(user define)
10       什么数据必须在初始化成员列表中进行初始化?
初始化一个referrence member时,必须在成员列表中(想一下为什么)
初始化一个 const member时,必须在成员列表中
基类没有default constructor 是必须在成员列表中调用带有参数的基类构造函数
符合上述条件的成员类
『c++在进入构造函数体之前,所有的数据都已经准备好,所以准备数据的过程就在成语啊你的初始化列表中取得初始值。』
11       init list 中初始化的顺序是按照声明的顺序, 不是在init list 中的顺序。当你用一个子类的函数的结果来初始化一个基类时,子类的this指针还没有完全生成,所以会发生意想不到的行为。
12       下列类的大小:
class x{};
class y:virtual public x{};
class z:virtual public x{};
class a:public x,public y{};
输出结果:编译器是 G++, 仅仅具有参考价值
size of x:       1
size of y:       4
size of z:       4
size of a:       4
13       内联函数可以访问所有的数据成员,这一点大家都知道,但是大家都没有意识到
int x;
class A{
public:
       A(int x):x(x){}
       int get(){return x;}
private:
       int x;
};
14       类中的成员变量的排列顺序这个标准没有硬性规定,所以那些依赖于成员之间顺序的程序都是不可以移植的。此外类同结构体一样,具有字节对其的性质。
15       类中的静态成员变量是独立于类的,我们可以随意访问之,前提条件是在限定作用允许的情况下 例如:
class A{
public:
       static int a;
};
int A::a;
int *p = &A::a;
但是:
class A{
       static int a;
};
int A::a;
int *p = &A::a;
这样是错误的。
之所以出现这样的结果是因为在类中静态成员是放在全局区之中,所以对于我们就开放了~
所以我们可以独立于类来操作类的public静态变量。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值