|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include<stdio.h>char *myString(){ char buffer[6] = {0}; char *s = "Hello World!"; for (int i = 0; i < sizeof(buffer) - 1; i++) { buffer[i] = *(s + i); } return buffer;}int main(int argc, char **argv){ printf("%s\n", myString()); return 0;} |
解析:
|
1
2
3
4
5
6
7
|
enum string{ x1, x2, x3=10, x4, x5, } x; |
|
1
2
3
4
5
6
7
8
|
C c;void main(){ A*pa=new A(); B b; static D d; delete pa;}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class CTest{ public: CTest():m_chData(‘\0’),m_nData(0) { } virtual void mem_fun(){} private: char m_chData; int m_nData; static char s_chData;};char CTest::s_chData=’\0’; |

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include<iostream>using namespace std;class MyClass{public: MyClass(int i = 0) { cout << i; } MyClass(const MyClass &x) { cout << 2; } MyClass &operator=(const MyClass &x) { cout << 3; return *this; } ~MyClass() { cout << 4; }};int main(){ MyClass obj1(1), obj2(2); MyClass obj3 = obj1; return 0;} |
解析:首先程序中存在三个MyClass对象。
前两个对象构造时分别输出1,2
第三个对象是这样构造的MyClass obj3 = obj1;这里会调用拷贝构造函数,输出2
然后三个对象依次析构,输出444
所以最终输出122444
MyClass obj3 = obj1;这里调用拷贝构造函数如果是在这之前obj3,obj1都已声明,则此时调用的是coby assignment操作符原文:http://www.cnblogs.com/90zeng/p/cpp_interview.html