C++ 难点笔记

A:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#include <iostream>//下列程序段有错吗?
using namespace std;
class A{
public:
A(int i){cout<<"A"<<i<<endl;};
void show(){cout<<"111"<<endl;}
};
class B {
public:
A a;
B(int i) :a(2){
cout<<"B"<<endl;
a.show();
}
};
int main(){
B b(2); //换成语句B b();呢? 函数?对象?
return 0;
}


[size=x-large]结论:B(int i) :a(2) A a;一看到这个就闷到了 原来是在编

译时段就初始化了,而且效率高,到底效率高在哪里呢?[/size]

B:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;
#include <iostream>
class One {public : void fun(){std::cout<<"One"<<std::endl;}
One* operator ->(){
return (new One());
}
};
class Two
{public :
One operator -> () //返回值类型是UDT类。但该类没有重载->操作符
{ return *(new One()); }

/*
One* operator -> () //成功UDT类指针,访问成功
{ return (new One()); }
*/
};
void main(){ Two test;
test-> fun(); //编译通不过,因为对one对象执行->操作。one对象只能通过.来访问成员
};


结论:重载这东西还是不熟练~!

异常
注意不要在析构函数中抛出异常,避免一个异常没有得到处理时又抛出一个异常,因为一个异常发生后会查找用来处理异常的catch子句,进行栈展开前调用局部变量的析构函数进行析构。尽量在构造函数中抛出异常,用于保证创建失败后能抛出异常,在catch子句中释放在构造函数中的资源。

编译依赖;编译多态(静态)、运行时多态(动态)。
编译单元:一个文件。为什么一个程序要分多个文件?
编译依赖是一个类、函数、软件实体、文件或组件等之间的关联,如果一个实体在编译时依赖于其它的实体才能编译,其它实体改变,则需要重新编译该实体。那么称该实体对其它实体有编译依赖。例子?我们要尽量使得编译依赖最小化。特别是尽量不要使用不需要的头文件,减少代码大小。

接口隔离原则(ISP, Interface Segregation Principle)

合成/聚合复用原则(CAPP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值