A:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[size=x-large]结论:B(int i) :a(2) A a;一看到这个就闷到了 原来是在编
译时段就初始化了,而且效率高,到底效率高在哪里呢?[/size]
B:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;
结论:重载这东西还是不熟练~!
异常
注意不要在析构函数中抛出异常,避免一个异常没有得到处理时又抛出一个异常,因为一个异常发生后会查找用来处理异常的catch子句,进行栈展开前调用局部变量的析构函数进行析构。尽量在构造函数中抛出异常,用于保证创建失败后能抛出异常,在catch子句中释放在构造函数中的资源。
编译依赖;编译多态(静态)、运行时多态(动态)。
编译单元:一个文件。为什么一个程序要分多个文件?
编译依赖是一个类、函数、软件实体、文件或组件等之间的关联,如果一个实体在编译时依赖于其它的实体才能编译,其它实体改变,则需要重新编译该实体。那么称该实体对其它实体有编译依赖。例子?我们要尽量使得编译依赖最小化。特别是尽量不要使用不需要的头文件,减少代码大小。
接口隔离原则(ISP, Interface Segregation Principle)
合成/聚合复用原则(CAPP
#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
1035

被折叠的 条评论
为什么被折叠?



