(1)
- class Base {
- public:
- Base() {
- cout << 1 << endl;
- }
- Base(Base && other) {
- cout << 2 << endl;
- }
- Base(const Base& other) {
- cout << 3 << endl;
- }
- Base& operator=(Base&& other) {
- cout << 4 << endl;
- return *this;
- }
- Base& operator=(const Base& other) {
- cout << 5 << endl;
- return *this;
- }
- };
- int main() {
- Base base1;
- Base base2 = base1;
- Base base3(base2);
- Base base4(std::move(base3));
- Base base5;
- base5 = base4;
- Base base6;
- base6 = std::move(base5);
- return 0;
- }
- 输出:
- 1
- 3
- 3
- 2
- 1
- 5
- 1
- 4
(2)
- #include
- #include
-
- using namespace std;
-
- static int a = 1;
-
- int main(){
- int b = 2;
- char* c = NULL;
- int t;
- c = (char*)malloc(100*sizeof(char));
- std::time_t t1 = std::time(0);
- for (long long i = 0; i < 27000000000; i++) {
- b = 1;
- }
- std::time_t t2 = std::time(0);
- cout << "access b=" << t2-t1 << endl;
- t1 = std::time(0);
- for (long long i = 0; i < 27000000000; i++) {
- a = 1;
- }
- t2 = std::time(0);
- cout << "access a=" << t2-t1 << endl;
- t1 = std::time(0);
- for (long long i = 0; i < 27000000000; i++) {
- *c = 'a';
- }
- t2 = std::time(0);
- cout << "access c=" << t2-t1 << endl;
- return 0;
- }
-
- 编译取消优化:g++ test.cpp -o test -O0
- 输出:
- access b=47
- access a=47
- access c=75
(3)
- int b = 2;
- const int * a1 = &b;
- const *int a2 = &b; //声明错误
- const int* const a3 = &b; //a3 和 a4 效果是一样的
- int const* const a4 = &b;
(4)
- int i, sum;
- for (i = 0; i < 6; i++)
- sum += i;
- cout << sum << endl;
- 输出:15
(5)
- char s[10]; s = "right"; //错误
- char s[10];*s="right"; //错误
- char *sp;*sp = "right"; //错误
- char*sp = "right"; //正确
(6)
- enum ts{1,2,3}; //错误
-
- int x, y = 2, z = 3;
- x = y+2 = z-5; //错误
-
-
- char a = '\xaa';
- char a = '\17';
- char a = '\t';
- 下面引用网友的话:
- C语言中 字符有两种表示表示 一种是单个字符 'a' ','等
- 另一种是用\开始的转义字符 比如‘\\' '\n' 这些有特定含义
- 还有一些字符不能用上述方式表示 此时'\123' 这个表示asc码为123的字符
- 因为C语言整数有几种表示表示方式
- 123的8进制为0153
- 123的16进制为 x7B
- 所以'\123'和'\0153' '\x7B'表示的是同一个字符
- '\xaa'表示的是 10×16+10=170 就是asc为170的字符 这个字符无法显示
(7)
- int i = 1, *p = &i, &r = i;
- decltype(r+0) c;
- decltype(*p + r) a;
- decltype(*p) b; //错误
- decltype((i)) d; //错误
(8)
- struct A {
- char t:4;
- // char k:4;
- // unsigned short i:8;
- // unsigned long m;
- };
- sizeof(A) = 1
-
- struct A {
- char t:4;
- char k:4;
- // unsigned short i:8;
- // unsigned long m;
- };
- sizeof(A) = 1
-
- struct A {
- char t:4;
- char k:4;
- unsigned short i:8;
- // unsigned long m;
- };
- sizeof(A) = 2
-
- struct A {
- char t:4;
- char k:4;
- unsigned short i:8;
- char q:4;
- // unsigned long m;
- };
- sizeof(A) = 4
-
- struct A {
- char t:4;
- char k:4;
- unsigned short i:8;
- char q:4;
- char p:4;
- // unsigned long m;
- };
- sizeof(A) = 4
-
- struct A {
- // char t:4;
- // char k:4;
- // unsigned short i:8;
- unsigned long m;
- };
- sizeof(A) = 8
-
- struct A {
- char t:4;
- // char k:4;
- // unsigned short i:8;
- unsigned long m;
- };
- sizeof(A) = 16
-
- struct A {
- char t:4;
- char k:4;
- // unsigned short i:8;
- unsigned long m;
- };
- sizeof(A) = 16
-
- struct A {
- char t:4;
- char k:4;
- unsigned short i:8;
- unsigned long m;
- };
- sizeof(A) = 16
-
- struct A {
- // char t:4;
- // char k:4;
- // unsigned short i:8;
- int e;
- // unsigned long m;
- };
- sizeof(A) = 4
-
- struct A {
- char t:4;
- // char k:4;
- // unsigned short i:8;
- int e;
- // unsigned long m;
- };
- sizeof(A) = 8
-
- struct A {
- int e;
- char t:4;
- // char k:4;
- // unsigned short i:8;
-
- // unsigned long m;
- };
- sizeof(A) = 8
-
- struct A {
- unsigned long m;
- // int e;
- char t:4;
- // char k:4;
- // unsigned short i:8;
- };
- sizeof(A) = 16
-
-
-
(9)HTTP的请求方式:http请求中的常用方法 - 知乎 (zhihu.com)
(10)get和post的区别:GET 和 POST请求的本质区别是什么?(本质没区别) - 知乎 (zhihu.com)