标签:
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