C/C++ 一些知识点总结
2018-03-03 17:15
591 查看
临时整理的,有些可能不对。
1)如果一个类里面有const-qualifier或reference, compiler不会为它生成default copy assignment operator函数。
2) Hidden是指子类和父类有同名函数,但又没有virtual关键字。这里函数只要同名就可以了,参数并不需要match。也就是说,compiler只要在子类看到有这个函数名,即使参数不match,也不会再往父类找了。
3) delete function, default function 都是C++ 11新加的函数属性。
4) Decision of constructor happens at compile time。
5) Non-member function 不能在它后面加const。
6) macro的缺点: a) macros不会放进symbol table; b) macros 不管scope; c) macro 替换有时可能不是想要的地方。
Enum的缺点应该也包含上面的a)和b)。
7) delete p 和 free p都不会改变p的值。
8) 在line 2后放断点,x在symbol table里面是数组还是指针? 答案是一个数组。sizeof(x)=10*sizeof(int)。p是一个指向int的指针。
int main {
int x[10]; //line 1
int *p; //line 2
}
9) pragma once 不portable。
10) 在copy constructor和copy assignment operator中,如果类中有一个member是数组,当数组成员不包含指针时,用memcpy是安全的,否则要用loop挨个调用copy assignment operator初始化。
11) C++中,private是对class而言。同一个class的不同object可以互相访问对方的private member。
12) 类的static成员不增加类实例的大小。
13) 通常不需要显式调用destructor。
14) static 成员在类中出现只是声明(declaration),应该还要另外definition。为什么呢? 因为类的definition都是放在头文件内,如果算definition则包含该头文件的每个.cpp文件都有一个copy。
15) 如果两个pointer刚好相等(first==last),delete ptr危险!因为对应的析构函数调用两次!
16) inline是一个request, 编译器可以选择拒绝。
17) int *p;
int const *q; //值const
int *const r; //指针const
p=q; //no, invalid conversion from 'const int*' to 'int *'
p=r; //ok
q=p; //ok
q=r; //ok
r=p; //no
r=q ;//no18) int const * const p = &x; 指针和值都const。典型例子是read-only register。
19) T& const r 不合法,因为引用&本身自带const属性,即一个引用不能再指向别人???
20) 引用相当于const pointer。
21) lvalue 是addressable,可以找到地址。
22) Compiler 会自行决定是否给const object 分配地址 。
23) int &ri=3; //no
int const &ri=3; //OK24)
25) C/C++的堆上变量若未初始化,缺省值为0。栈上变量若未初始化,缺失值为未定义。
26) struct A {
...
};C要用struct A a; C++可以直接用A a;
27) C++11定义的大括号初始化class Test{
int a;
int b;
public:
C(int i, int j);
};
Test t{0,0}; //C++11 only,相当于 Test t(0,0);
Test* pT=new Test{1,2}; //C++11 only,相当于 Test* pT=new Test{1,2};
int* a = new int[3]{ 1, 2, 0 }; //C++11 only
1)如果一个类里面有const-qualifier或reference, compiler不会为它生成default copy assignment operator函数。
2) Hidden是指子类和父类有同名函数,但又没有virtual关键字。这里函数只要同名就可以了,参数并不需要match。也就是说,compiler只要在子类看到有这个函数名,即使参数不match,也不会再往父类找了。
3) delete function, default function 都是C++ 11新加的函数属性。
4) Decision of constructor happens at compile time。
5) Non-member function 不能在它后面加const。
6) macro的缺点: a) macros不会放进symbol table; b) macros 不管scope; c) macro 替换有时可能不是想要的地方。
Enum的缺点应该也包含上面的a)和b)。
7) delete p 和 free p都不会改变p的值。
8) 在line 2后放断点,x在symbol table里面是数组还是指针? 答案是一个数组。sizeof(x)=10*sizeof(int)。p是一个指向int的指针。
int main {
int x[10]; //line 1
int *p; //line 2
}
9) pragma once 不portable。
10) 在copy constructor和copy assignment operator中,如果类中有一个member是数组,当数组成员不包含指针时,用memcpy是安全的,否则要用loop挨个调用copy assignment operator初始化。
11) C++中,private是对class而言。同一个class的不同object可以互相访问对方的private member。
12) 类的static成员不增加类实例的大小。
13) 通常不需要显式调用destructor。
14) static 成员在类中出现只是声明(declaration),应该还要另外definition。为什么呢? 因为类的definition都是放在头文件内,如果算definition则包含该头文件的每个.cpp文件都有一个copy。
15) 如果两个pointer刚好相等(first==last),delete ptr危险!因为对应的析构函数调用两次!
16) inline是一个request, 编译器可以选择拒绝。
17) int *p;
int const *q; //值const
int *const r; //指针const
p=q; //no, invalid conversion from 'const int*' to 'int *'
p=r; //ok
q=p; //ok
q=r; //ok
r=p; //no
r=q ;//no18) int const * const p = &x; 指针和值都const。典型例子是read-only register。
19) T& const r 不合法,因为引用&本身自带const属性,即一个引用不能再指向别人???
20) 引用相当于const pointer。
21) lvalue 是addressable,可以找到地址。
22) Compiler 会自行决定是否给const object 分配地址 。
23) int &ri=3; //no
int const &ri=3; //OK24)
void fun(int n) { int a ; ... }这种写法C99和C++14都是支持的。但像TurboC和VC平台仅支持C89的不支持这种写法。
25) C/C++的堆上变量若未初始化,缺省值为0。栈上变量若未初始化,缺失值为未定义。
26) struct A {
...
};C要用struct A a; C++可以直接用A a;
27) C++11定义的大括号初始化class Test{
int a;
int b;
public:
C(int i, int j);
};
Test t{0,0}; //C++11 only,相当于 Test t(0,0);
Test* pT=new Test{1,2}; //C++11 only,相当于 Test* pT=new Test{1,2};
int* a = new int[3]{ 1, 2, 0 }; //C++11 only
// C++11 container initializer vector<string> vs={ "first", "second", "third"}; map<string,string> singers ={ {"Lady Gaga", "+1 (212) 555-7890"},{"Beyonce Knowles", "+1 (212) 555-0987"}};但这种写法一般只用于POD(plain old data) 变量。
相关文章推荐
- c++知识点总结--new的一些用法
- C++的一些知识点总结
- 最近看的一些关于数据结构和C++的面试知识点总结
- c/c++一些小知识点(特此总结)
- 总结一些笔记上的C和C++知识点
- c++模板的一些知识点总结
- C++一些知识点的简单总结
- c++学习总结(一些零碎的小知识点)
- 树的一些知识点总结
- C++ 知识点总结复习
- C/C++ 知识点总结
- 个人对C/C++使用的一些总结
- [C++] inline函数_内联函数的一些总结【转载】
- C/C++知识点总结(二)
- C/C++中一些不太注意到的小知识点--[锦集]
- 开发中总结的一些小的知识点,陆续更新中
- C++知识点总结
- C++的一些知识点汇总
- C++一些容易忽略的知识点
- 类的一些知识点的总结与思考