c和c++易错点拾露

版权声明:本文为博主原创学习记录文章,未经博主允许不得转载。 https://blog.csdn.net/cooco369/article/details/48847305

高质量c++与c补漏

1、

#define INT_PTR int* 
	typedef int* int_ptr; 
	INT_PTR a,b; 
	int_ptr c,d; 

b不是指针,int类型。上面代码可以放在main函数中,但头文件不可

2、封装 继承 多态 是面向对象程序设计的三大特性

3、寄存器变量,放在寄存器而非内存中,效率更高,一般是临时变量

4、继承中的父类的私有变量是在子类中存在的,不能访问是编译器的行为,是可以通过指针操作内存来访问的

5、函数指针赋值 void (*pf)(int n,char *s); pf=fun; 函数名为指针类型;函数重载的实质就是这个。

6、delete p只是把p指向的那一块内存给收回了,而p本身这个变量还是存在的。删除一个指针后应该将其其值赋为0。

7、c++尽量采用引用传递,为了保证程序的健壮性加const修饰,如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。

void StringCopy(char *strDestination,const char *strSource);

输入参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。

8、p是指向结构体的指针,a为结构体的一个成员变量,则(*p).a表示访问结构体中的变量a,或为为p->a

9、const主要用在3个地方:函数参数传递时,函数返回值,函数参数括号后。

10、*this表示当前的对象

11、sizeof 是操作符,size_t byte6 = sizeof 2.00000000000000000000;在32位机上为8

12、本函数中释放指针;

13、构造函数是不能设置为私有的。

14、++的结合性为右结合,所以++++i合法,而i++++不合法,可以改为(i++)++;

15、const对象只能调用const成员函数。

16、在C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数,建议将成员函数的定义与声明分开

17、不提倡使用全局变量,尽量不要在头文件中出现象extern int value 这类声明。

18、Box::Draw 类::名

19、定义变量的同时初始化该变量(就近原则)

20、风格:空行 代码行 空格 对齐 长行拆分 * 和 & 紧靠变量名 命名

DrawBox();       // 全局函数    box->Draw(); 动宾词组       // 类的成员函数 动词

int      minValue;

int      maxValue; 互斥意义的变量或相反动作的函数

const int MAX = 100;常量全用大写的字母

static int s_initValue;       // 静态变量 加前缀s_(表示static)。

类的数据成员加前缀m_(表示member),

21、每个case语句的结尾不要忘了加break,不要忘记最后那个default分支

22、const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:编译器类型安全检查,调试

23、const数据成员的初始化只能在类构造函数的初始化表中进行,不能在类声明中初始化const数据成员。

24、类中的枚举常量来实现整个类中都恒定的常量,枚举常量不会占用对象的存储空间,它们在编译时被全部求值

25、C语言中,凡不加类型说明的函数,一律自动按整型处理。却容易被误解为void类型。main()

26、getchar的确不是char类型,而是int类型,int getchar(void);

27、临时变量return int(x + y); 

String temp(s1 + s2);临时对象

28、assert((pvTo != NULL) && (pvFrom != NULL));     // 使用断言函数的入口处

29、引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。

一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。

   

30、引用的主要功能是传递函数的参数和返回值。C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。

31、“引用传递”的声明象“指针传递”,实现象“值传递”。指针调用传引用,引用调用传值,

                                                          内存管理


32  字符和字符串比较

	string filename = "./grabcut/HLG00002.jpg";
	cout << filename.c_str()[0] << endl;
	char c_1 = '.';
	cout << c_1 << endl;
	cout << ('.' == filename.c_str()[0]) << endl;
	std::string new_url = "http:" + filename;
	cout << (new_url) << endl;














猜你喜欢

转载自blog.csdn.net/cooco369/article/details/48847305