C++语言基础知识
- sizeof作用:
- sizeof空类型,返回值为1。 原因:声明空类型时,必须在内存中占一定的空间,否则无法使用这些实例。占用多少内存,由编译器决定,Visual Studio中,空类型的实例占1字节的空间。
- 构造函数和析构函数的sizof均为1 原因无返回值,相当于是空类型
- 其余函数的sizeof 根据的是它的返回值
- 虚函数:相当于指向虚函数表的指针,32位的话 ,一个指针占4字节,64位的话,指针占8字节。
- 赋值运算符函数:
- tip:运算符重载:即实现运算符多态的一种方法,修改传统运算符的方式。
- 格式:
return_val operator op(argument -list)
符号含义:
- return_val: 返回值,可选,例如重载+ 一般都有返回值, 重载=号 可就没返回值。
- operator: 重载符号:默认
- op: 需要重载的符号例如:+ - * /
- argument-list :重载的参数 例如int+int 那么重载的参数就是int
实例:
#include "stdafx.h" class People { public: //构造函数和析构函数 People(); ~People(); public: char walk(); float getCount(); People operator+(const People&op_People);//重载加号运算符 }; 可以看出,头文件中,定义了一个重载+号符号的运算符重载函数 接下来是实现: // SizeofDemo.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "SizeofDemo.h" using namespace std; People::People() { cout << "This is a people!" << endl; } People::~People() { } char People::walk() { cout << "sss"<<endl; return 0; } People People::operator+(const People&op_People) { cout << "重载成功" << endl; People mm; mm = op_People; return mm; } float People::getCount() { return 22.6; } int _tmain(int argc, _TCHAR* argv[]) { People * p_People = new People(); cout << sizeof(p_People->walk()) << endl; delete p_People; People cir_dd; People dd; People cir = cir_dd +dd; //测试重载 system("pause"); return 0; }
运行结果:
可以看出 重载成功,实现了+号的多态。