摘要:
在构造函数语义学之程序转化语义学(1)中编译器做了一些优化,有时他还会给你的程序更多的优化: (1) 在使用者层面做优化 如果程序员顶一个计算用的 constructor: X bar( const T &y, const T &z ) { X xx; // ...以 y 和 z 来处理 xx return xx; } 有的编译器开发人员会另外定义一个 constructor: X bar( const T &y, const T&z ) { return X( y,z ); } 定义被转化之后,再做如下的... 阅读全文
摘要:
大家知道初始化与赋值是有区别的,那么有哪几种初始化的方式呢?有以下三种情况://这句话可能有问题,回头修改! (1).明确的初始化操作(Explicit Initialization) (2).参数的初始化(Argument Initialization) (3).返回值的初始化(Explic... 阅读全文
摘要:
二、详述条件 3 和 4 那么好,我又要问大家了,条件1 和 2比较容易理解。因为member object或 base class 含有copy constructor。那么member object所在的class或者base class的derived class需要合成一个nontrivi... 阅读全文
摘要:
一、Copy Constructor的构建操作 就像 default constructor 一样,如果class没有申明一个 copy constructor,就会隐含的声明或隐含的定义一个。生成的 copy constructor 也分为 trivial 和 nontrivial 两种。只有 ... 阅读全文
摘要:
一、Default Constructor的构建操作 首先大家要走出两个误区: 1).任何class如果没有定义default constructor,就会被合成一个来。 2).便以其合成出来的default constructor 会明确设定“class”内每一个data membe... 阅读全文
摘要:
废话少说,先看一段代码!1 #include 2 #include 3 using namespace std;4 5 class A6 {7 public:8 int val;9 };10 class B:public A11 {12 public:13 int val;14 };15 int main()16 {17 cout << sizeof(A) << endl;18 cout << sizeof(B) << endl;19 return 0;20 }大家知道输出的结果是什么吗?结果是4和8(我的机子上int 是4个字节)!这说明了什么 阅读全文
摘要:
对于大牛来说,我写的可能很低级哈,留给自己看,以后遇到的都慢慢补充哈!^^1.每一个类定义结束后,不要忘了在类的结束符"}"后面加上一个";"哦!2.构造函数和析构函数肯定是不能只申明而不定义的,因为这个两个函数无论如何都会被调用。其他成员函数倒是可以只申明而不定义---只要你不调用它!3.一个类会... 阅读全文
摘要:
初学:《C++ 编程思想》《C++ Primer》《The C++ Programming Language》提高:《C++ 的发展与演化》《深度探索C++ 事物模型》进阶:《Effectie C++》/ 《More Effective C++》《C++ 沉思录》泛型编程:《STL源码剖析》《C++ 涉及心思为---泛型编程与设计模式之应用》《C++ 标准库》《Effective STL 中文版》---虽然目前这些书不用全看,但在我以后的日子里一定会将上述所列C++图书看完! 阅读全文
摘要:
今天学习了一下C++中的强制转换,看了const_cast,我发现了这个转换关键字的奇怪之处,于是把它记录一下,废话不说,先看一个程序: 1 #include 2 3 using namespace std; 4 5 int main() 6 { 7 const int val = 5; 8 int test =5; 9 //int *pval = &val; //err: cannot convert from 'const int * to int *'10 int *pval = const_cast(&val);11 cout << ... 阅读全文