c++面试笔试必备知识
2015-08-23 22:08
281 查看
<pre name="code" class="cpp">//①静态对象成员 #include <iostream> using namespace std; class A { public: A() { cout << "A's Constructor Called " << endl; } }; class B { public: B() { cout << "B's Constructor Called " << endl; } static A a; }; A B::a;//如果没有这个,则下面的B b不会调用A的构造函数 int main() { B b;//a的构造函数在main函数之前就访问了,b的现在才会调用构造函数 B::a;//能正常访问 return 0; } //解释:上面的程序只是调用了B的构造函数,没有调用A的构造函数。 //因为静态成员变量只是在类中声明,没有定义。 //静态成员变量必须在类外使用作用域标识符显式定义。 //②联合体和枚举 #include <iostream> using namespace std; union { int i; char x[2]; }a; class A { enum{a,b,c,d}; }; class B { enum{a,b,c,d}C; }; int main() { cout<<"sizeof(A):"<<sizeof(A)<<endl;//输出1 cout<<"sizeof(B):"<<sizeof(B)<<endl;//输出4 a.i = 0; //00 00 00 00 a.x[0] = 10; //0a 00 00 00 a.x[1] = 1; //0a 01 00 00 //a小端字节序 a = 0x010a = 266 cout<<"a.i:"<<a.i<<endl; return 0; } //③下面代码不会报错? class A { public: int m; void print() { cout << "A\n"; } }; //上面的void print();---->void print(A * const this); int main() { A *pa = 0; pa->print();//相当于print(pa) return 0; } //并不是类没有初始化就不能调用类的成员函数. //如果成员函数只是简单的打印个东西,没有调用类成员啥的就不会报段错误。 //返回值加const修饰的必要性 //你觉得下面两种写法有区别吗? A GetA(void); const A GetA(void); //答案:没有任何区别。 //解释:如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。所以,对于值传递来说,加const没有太多意义。 //所以: //不要把函数A GetA(void) 写成const A GetA(void)。 //当然 如果是返回引用,那就不一样了。
相关文章推荐
- C++的 函数模板和模板函数、类模板和模板类区别
- c& c++笔试题
- c++函数内部可以返回函数内部定义的指针 但是不能返回函数内部定义的数组
- c& c++ enum
- c & c++中const
- Accelerated C++学习笔记4
- Accelerated C++ 学习笔记3
- c++返回引用和返回对象的区别
- C++ Primer 5e chapter 14.2
- C++ Primer 5e chapter 14.1
- C/C++头文件注释
- [C++]Remove Duplicates from Sorted List 从已排序的链表中移除重复元素
- ### C++总结-[类成员函数]
- [C++]Implement strStr() 找到子字符串第一次出现的位置
- [C++]Merge Two Sorted Lists 归并两个排序的链表
- 快速排序(c语言实现)
- 浅谈c中switch的暴力跳转
- 如何在C++类中安全地使用多线程中的处理函数
- C++多态
- visual stdio 2015下调试c++程序一闪而过决解办法